Trouver des répertoires comprend des répertoires avec AutoConf
-
28-10-2019 - |
Question
J'essaie de compiler un programme qui utilise la bibliothèque du festival.
Fondamentalement, les exigences sont que vous incluez le festival et Répertoires d'en-tête d'Estools dans le chemin d'inclusion, et vous incluez à la fois leurs chemins de bibliothèque.
Dans une installation normale, ils restent simplement dans leurs propres dossiers, donc vous avez
/some/path/festival/src/include
/some/other/path/estools/include
comme le chemin de recherche requis, et
/some/path/festival/src/lib
/some/other/path/estools/lib
comme chemin de la bibliothèque.
Je pense que la bonne façon de gérer cela est avec une option de configuration "--avec-élaboration" et une option de configuration "--avec-festival".
Cependant, il y a une configuration différente lorsqu'elle est installée sur un système Debian / Ubuntu. J'aimerais pouvoir gérer cette configuration, où se trouvent les chemins de recherche
/usr/include/festival
/usr/include/estools
Et le chemin de recherche est juste
/usr/lib
Je voudrais détecter le deuxième cas et le gérer automatiquement, tout en obligeant l'utilisateur à spécifier les deux premiers répertoires si le deuxième cas n'est pas satisfait. Comment pourrais-je faire cela?
La solution
Y a-t-il quelque chose qui empêcherait des options de définition comme ainsi?
- Festival comprend une valeur par défaut (si unset) à / usr / inclure / festival
--festival-libs avec une valeur par défaut (si unset) à /usr/lib/libfestival.xxx
Il en va de même pour les Osools.
Autres conseils
Il n'est pas nécessaire que le mainteneur de colis de s'inquiéter de ces détails; Il est de la responsabilité de l'utilisateur. Si l'utilisateur a installé une bibliothèque dans un emplacement non standard, l'utilisateur doit ajouter ldflags = -l / path / to / lib dans un fichier config_site ou à chaque invocation de configurer ou de mettre ce chemin dans le chemin de recherche du compilateur dans un mécanisme dépendant du système. De même, l'utilisateur doit ajouter -i / path / vers / inclure à cppflags.
En d'autres termes, Debian fait la bonne chose en installant simplement les bibliothèques et les en-têtes à l'emplacement standard. Quiconque choisit d'installer les bibliothèques dans un emplacement non standard se donne plus de travail. Ce n'est pas votre responsabilité de réparer leurs erreurs.
L'ajout d'options comme - avec-festival ou - avec-festival-t-t-t-t-thers n'est pas utile; L'utilisateur peut tout aussi bien attribuer aux LDFLAGS et CPPFLAG, et ces variables sont standardisées.
Certaines plateformes ont adopté la norme de l'héirarchie du système de fichiers - http://en.wikipedia.org/wiki/filesystem_hierarchy_standard .
Cela devrait vraiment être reflété dans AutoConF, au lieu d'insister sur le fait que l'utilisateur doit y faire face en définissant CFLAGS, car / opt / openssl / lib n'est plus un emplacement "non standard".
Le FHS spécifie également que / usr / local est une «hiérarchie tertiaire pour les données locales, spécifique à cet hôte». Donc, sans doute, / opt devrait vraiment être vérifié en premier.
Plus sur FHS / OPT -> http://www.pathname.com/fhs/pub/fhs-2.3.html#optaddonapplicationsoftwarepackages