Question

Je généré un script de configuration avec autoconf pour construire mon projet.

Il fonctionne bien à moins que je n'ai pas une bibliothèque nécessaire installé. Faire une erreur de retour en manquant quelques fichiers, mais il doit être vérifié par le fait script configure je pense?

Alors ma question est: Comment modifier un script généré autoconf pour rechercher des dépendances et indiquer à l'utilisateur que les bibliothèques qu'il manque

Était-ce utile?

La solution

Cela dépend de la dépendance, il n'y a pas de solution générique.

Il y a AC_CHECK_LIB et macros AC_SEARCH_LIBS qui peuvent travailler pour vous si les bibliothèques et les en-têtes sont installés dans des emplacements standard.

Beaucoup de paquets prennent en charge aujourd'hui pkg-config ou quelque chose de similaire qui vous permet de vérifier l'existence de les bibliothèques, et peuvent également vous fournir les drapeaux du compilateur et éditeur de liens.

Avec des forfaits qui ne fonctionnent pas avec des macros AC et ne prennent pas en charge pkg-config ou similaire, vous aurez probablement écrire une tonne de scripts vous-même pour savoir si la dépendance est disponible et ce compilateur et les options de l'éditeur de liens, il a besoin. Et même alors, il est difficile de le rendre portable.

Autres conseils

Oui, vous voulez effectuer la vérification au moment de la configuration. Code coller telle que la suivante ( grâce à Shlomi poisson) dans votre configure.ac:

if test "x$requires_libavl" = "xyes" ; then
    AC_CHECK_LIB(avl, avl_create, [], [
        echo "Error! You need to have libavl around."
        exit -1
        ])
fi

Notez que si vous avez un pré-2.5 autoconf, vous utiliserez configure.in à la place.

La façon dont je l'ai fait dans le passé est d'écrire un programme trivial qui soit tire dans un fichier d'en-tête nécessaire, ou des liens vers une bibliothèque nécessaire, et compiler / lien dans le script de configuration. Si cela échoue, vous émettez un message indiquant que l'exigence est pas remplie. Je vous offre plus de détails, mais le code est sur un lecteur qui ne sont plus avec nous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top