Trovare le directory personalizzate include le directory con autoconf
-
28-10-2019 - |
Domanda
Sto cercando di compilare un programma che utilizzi la libreria del festival.
Fondamentalmente, i requisiti sono che tu includa le directory di intestazione festival e estools nel percorso di inclusione e includi entrambi i loro percorsi di libreria.
In un'installazione normale, rimangono semplicemente nelle loro cartelle, quindi hai
/some/path/festival/src/include
/some/other/path/estools/include
come percorso di ricerca richiesto e
/some/path/festival/src/lib
/some/other/path/estools/lib
come percorso della libreria.
Penso che il modo corretto per gestirlo sia con un'opzione di configurazione "--with-estools" e "--with-festival".
Tuttavia, c'è una configurazione diversa quando è installato su un sistema debian / ubuntu. Mi piacerebbe essere in grado di gestire questa configurazione, dove si trovano i percorsi di ricerca
/usr/include/festival
/usr/include/estools
e il percorso di ricerca è solo
/usr/lib
Vorrei rilevare il secondo caso e gestirlo automaticamente, richiedendo comunque all'utente di specificare le prime due directory se il secondo caso non è soddisfatto.Come potrei farlo?
Soluzione
C'è qualcosa che preclude l'impostazione di opzioni del genere?
-
--festival-includes con un valore predefinito (se non impostato) su / usr / include / festival
-
--festival-libs con un valore predefinito (se non impostato) su /usr/lib/libfestival.XXX
Lo stesso vale per gli estool.
Altri suggerimenti
Non è necessario che il manutentore del pacchetto si preoccupi di questi dettagli;è responsabilità dell'utente.Se l'utente ha installato una libreria in una posizione non standard, l'utente deve aggiungere LDFLAGS= -L / path / to / lib a un file CONFIG_SITE o ad ogni invocazione di configure o inserire quel percorso nel percorso di ricerca del compilatore attraversoqualche meccanismo dipendente dal sistema.Allo stesso modo, l'utente deve aggiungere -I / path / to / include a CPPFLAGS.
In altre parole, Debian sta facendo la cosa giusta semplicemente installando le librerie e gli header nella posizione standard.Chiunque scelga di installare le librerie in una posizione non standard si sta dando più lavoro.Non è tua responsabilità correggere i loro errori.
Aggiungere opzioni come --with-festival o --with-festival-headers non è utile;l'utente può assegnare altrettanto facilmente a LDFLAGS e CPPFLAGS e tali variabili sono standardizzate.
Alcune piattaforme hanno adottato il Filesystem Heirarchy Standard - http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard.
Questo dovrebbe davvero riflettersi in autoconf, invece di insistere sul fatto che l'utente dovrebbe gestirlo impostando CFLAGS, perché / opt / openssl / lib non è più una posizione "non standard".
L'FHS specifica anche che / usr / local è una "gerarchia terziaria per i dati locali, specifica per questo host".Quindi, probabilmente, / opt dovrebbe essere controllato per primo.
Altro su FHS / opt -> http://www.pathname.com / fhs / pub / fhs-2.3.html # OPTADDONAPPLICATIONSOFTWAREPACKAGES