Qual è il modo normale di trattare con posizioni delle librerie non standard in uno script autoconf?
-
09-09-2019 - |
Domanda
Sto cercando di usare GNU autoconf / automake toolchain per la prima volta, quindi la risposta alla mia domanda potrebbe essere banale.
Il programma ha bisogno di OpenGL / GLUT in cui le intestazioni e le librerie sono installati in una posizione non standard. Ho trovato queste macro che dovrebbero fare tutto il controllo per me. Sto semplicemente chiamando con AX_CHECK_GLUT . Come faccio a fare la macro trovare le librerie? Sto cercando qualcosa di simile
./ configure --with-sovrabbondanza-dir = / home / Hanno / sovrabbondanza
Più in generale: Qual è il modo normale di trattare con posizioni delle librerie non standard in uno script autoconf? Naturalmente, posso giocare con CPPFLAGS e LIBS variabili, ma ho la sensazione che mi manca qualcosa.
Soluzione
Il modo in cui sono progettati Autotools, un pacchetto autore non deve fare nulla per sostenere prerequisito installati in luoghi non standard. L'uscita del ./configure --help
comprende le seguenti linee:
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
Di conseguenza, se il programma di installazione ha un prerequisito installato in una posizione non standard, dovrà emettere
./configure CPPFLAGS=-I/non-standard-dir/include LDFLAGS=-L/non-standard-dir/lib
A causa CPPFLAGS
e LDFLAGS
sono utilizzati da controlli e regole configure
Makefile
, tutto dovrebbe funzionare.
Alcuni autori pacchetto come per offrire un --with-
pacchetto =location
come abbreviazione di quanto sopra, ma questo di solito non è lo scopo di --with-
pacchetto Opzioni. Queste opzioni sono utilizzate al meglio per specificare se un pacchetto opzionale dovrebbe essere usato , o come un prerequisito deve essere soddisfatta .