J'ai un certain nombre de fichiers C ++ distribués dans plusieurs dossiers.
obj/%.obj: a_library/%.cpp # ... obj/%.obj: a_library/category1/%.cpp # ...
5 Réponses :
Une solution à laquelle je peux penser: il suffit de les construire sur une règle simple, puis de créer une "phase de collecte" déplacer les fichiers ".o" sur un seul dossier.
Faire une cible "collecte_objs" qui dépend de Votre $ (Objs), puis votre cible "principale" doit dépendre de "collect_objs". p>
Le travertisseur peut être effectué à l'aide de coque p> bien sûr Cela implique d'utiliser un package UNXUTILS (avec 'Rechercher' et 'MV') ou CYGWIN, car vous êtes sous Windows. p> L'autre option consiste à générer explicitement les objectifs de votre fichier .c / .cpp , en utilisant un outil. Saisissez Python, traverser les répertoires de sources et pour chaque fichier .C / .cpple écrit p>
Essayez de paramétrer et pour ajouter une liste de fichiers complète (je vous recommanderais de répertorier explicitement les fichiers, n'utilisez pas VPATH code>:
$ (wildcard ...) code> fonction) et la liaison de l'application: p>
$ (wildcard) code> a une tendance gênante à ramasser Tout ce qui concerne les répertoires, tels que des fichiers de test ou des temporaires d'un ponctuel (s'ils avaient un nom de montage:
~ fichier.cpp code>). p> p>
La manière standard consiste à avoir un C'était mes deux premiers hits sur 10 ^ 100: p>
http://owen.sj.ca .us / ~ rk / howto / diapositives / make / diapositives / makerecurs.html p>
http://www.gnu.org/ Savannah-Checkouts / GNU / Make / Manual / HTML_Node / Récursion.html P> makefile code> dans chaque dossier et appeler récursivement avec
inclure code> p>
Pas strictement lié à cette question car il n'a pas à faire avec faire, bien que j'aimerais montrer comment je compile mes projets maintenant, 3 ans plus tard. Craftr est un système de méta-construction basé sur Python qui encourage les bâtiments indirects hors de l'arborescence (par exemple, un exécutant Construire code> dans l'arbre de travail). Construire des fichiers d'objet et la crête d'une bibliothèque statique est aussi simple que
Craftr -eb code> entraînera la structure suivante des produits de construction p>
Craftfile
file1.c
file2.c
category1/
file3.c
file4.c
build/
my_project/
obj/
file1.o
file2.o
category1/
file3.o
file4.o
libmyproj.a