2009-06-03 16 views
2

J'essaie d'utiliser la chaîne d'outils GNU autoconf/automake pour la première fois, donc la réponse à ma question peut être triviale.Quelle est la manière normale de gérer les emplacements de bibliothèque non standard dans un script autoconf?

Le programme nécessite OpenGL/GLUT où les en-têtes et les bibliothèques sont installés dans un emplacement non standard. J'ai trouvé these des macros qui devraient faire tout le contrôle pour moi. Je l'appelle simplement avec AX_CHECK_GLUT. Comment faire pour que la macro trouve les bibliothèques? Je cherche quelque chose comme

./configure --with-GLUT-dir =/home/hanno/rassasiement

Plus généralement: Quelle est la façon normale de traiter non standard emplacements de bibliothèque dans un script autoconf? Bien sûr, je peux jouer avec les variables CPPFLAGS et LIBS, mais j'ai le sentiment qu'il me manque quelque chose.

Répondre

3

De la manière dont les Autotools sont conçus, un auteur de package n'a rien à faire pour prendre en charge les prérequis installés dans des emplacements non standard. La sortie de ./configure --help comprend les lignes suivantes:

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> 

Par conséquent, si le programme d'installation a une condition préalable installé dans un endroit non standard, il devra émettre

./configure CPPFLAGS=-I/non-standard-dir/include LDFLAGS=-L/non-standard-dir/lib 

Parce que CPPFLAGS et LDFLAGS sont utilisés par configure vérifications et Makefile règles, tout devrait fonctionner.

Certains auteurs de paquets comme pour offrir un --with-package l'option =location comme raccourci pour ce qui précède, mais ce n'est normalement pas le but de --with-package options. Ces options sont mieux utilisées to specify whether an optional package should be used, or how a prerequisite should be fulfilled.