J'ai la structure de répertoire suivant:Existe-t-il un moyen d'éviter la création récursive avec nobase?
Makefile.am
src/
mymod/
mod.cc
submod/
submod.cc
inc/
Makefile.am
mymod/
mod.hh
submod/
submod.hh
En utilisant les autotools, je voudrais distribuer à la fois une bibliothèque faite à partir src
et les en-têtes dans inc
. Le niveau supérieur Makefile.am
ressemble à quelque chose comme
lib_LTLIBRARIES = mylib.la
mylib_la_SOURCES=./mymod/mod.cc\
./mymod/submod/submod.cc
SUBDIRS=inc
Puis inc/Makefile.am
a
mymod_includedir=$(includedir)
nobase_mymod_include_HEADERS=mymod/mod.hh\
mymod/submod/submod.hh
Cela fonctionne bien. Je finis avec toutes les choses de bibliothèque, et mes en-têtes sont installés correctement. Cependant, je voudrais éliminer la récursivité impliquée dans le Makefile. Le problème est que si je déplace les lignes inc/Makefile.am
dans le répertoire racine, alors je dois mettre à jour les chemins comme suit:
mymod_includedir=$(includedir)
nobase_mymod_include_HEADERS=inc/mymod/mod.hh\
inc/mymod/submod/submod.hh
Cela se traduit par mes en-têtes faire larguer comme $PREFIX/include/inc/mymod/mod.hh
et non $PREFIX/include/mymod/mod.hh
comme je veux. Je sais que je pouvais faire quelque chose comme
mymodincludedir=$(includedir)/mymod
mymod_HEADERS=inc/mymod/mod.hh
mysubmodincludedir=$(includedir)/mymod/submod
mysubmod_HEADERS=inc/mymod/submod/submod.hh
mais c'est assez douloureux, parce qu'il ya une beaucoup des sous-répertoires et plusieurs sous-répertoires dans les sous-répertoires (nous distribuer un code de 3ème partie que nos propres têtes ont besoin) . Ce que j'aimerais pouvoir faire c'est soit dire à automake de simplement copier les répertoires dans /inc
à $(includepath)
avec chaque sous-répertoire qu'il rencontre, soit lui dire de ne retirer qu'une partie du chemin à partir des fichiers d'en-tête que je liste. Est-ce possible?
Pourriez-vous élaborer un peu? L'approche Makemodule.am est déjà ce que j'utilise. Comment puis-je utiliser nobase_ de cette façon? D'après ce que je comprends, je dois encore spécifier le chemin complet, donc je rencontre toujours les mêmes problèmes mentionnés dans ma question. – jonthalpy