2009-09-30 8 views
2

J'essaye d'écrire un fichier configure.ac de telle sorte que le script configure résultant recherche un répertoire de bibliothèque contenant une bibliothèque statique donnée, par ex. libsomething.a. Comment puis-je faire ceci? En ce moment, je l'ai vérifier un seul endroit avec:Comment obtenir un script configure pour rechercher une bibliothèque

AC_CHECK_FILE([/usr/local/lib/libsomething.a],[AC_SUBST(libsomething,"-L/usr/local/lib -lsomething")],[AC_SUBST(libcfitsio,'')]) 

Mais je veux qu'il essaie de le trouver automatiquement. Et si la bibliothèque ne se trouve pas dans l'un des emplacements par défaut, je voudrais configurer configure pour dire que la bibliothèque n'a pas été trouvée et qu'un emplacement personnalisé peut être spécifié avec --use-something = path comme d'habitude. Donc, j'ai aussi besoin de vérifier si --use-something = path est fourni. Je suis assez nouveau pour créer des fichiers de configuration, et la documentation M4 n'est pas très facile à suivre, donc j'apprécierais toute aide.

Merci!

Répondre

2

La meilleure façon de comprendre cela est de regarder d'autres macros autoconf qui font quelque chose de similaire. Les macros Autoconf sont un amalgame de scripts shell Bourne et de code M4, ce qui leur permet de résoudre littéralement tout problème calculable.

Voici un lien vers une macro que j'ai écrite pour MySQL++ qui fait ceci: mysql++.m4.

+0

merci pour l'exemple de script - j'ai été en mesure de le comprendre en utilisant cela! – astrofrog

15

Ce n'est pas le travail de configure de rechercher bibliothèques sont installées. il devrait seulement s'assurer qu'ils sont disponibles pour l'éditeur de liens. Si l'utilisateur les a installés dans un emplacement différent, il sait comment appeler ./configure CPPFLAGS=-I/the/location/include LDFLAGS=-L/the/location/lib pour que les outils trouvent la bibliothèque (ceci est expliqué dans la sortie --help de configure et dans le fichier standard INSTALL).

Les macros --with-package et --enable-package ne sont pas censées être utilisées pour spécifier des chemins, contrairement à ce que font beaucoup de macros tierces. Le GNU Coding Standards interdit explicitement cet usage:

Ne pas utiliser une option --with pour spécifier le nom de fichier à utiliser pour trouver certains fichiers. C'est en dehors de la portée de ce que les options --with sont pour.

CPPFLAGS et LDFLAGS sont déjà là pour résoudre le problème, alors pourquoi maintenir et réaménager un autre mécanisme?

Questions connexes