2016-06-11 3 views
1

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?

Répondre

0

Je pense que le plus proche que vous pouvez trouver est Makemodule.am approach de Karel Zak pour lequel nobase_ fonctionnerait comme vous avez besoin.

+0

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