voilà mon soucis: j'utilise makefile et gcc pour la compilation de mon projet:
voici l'arborescence du projet
... etc ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 proj \ bin \ obj \ src \base \fem \base \math
tous les fichier cpp et .h son dans les répertoires src/*
je veux que tous les .o généré aillent dans le répertoire obj (sans arborescence dans ce répertoire là)
src/base/toto.cpp -> obj/toto.o
src/fem/base/titi.cpp -> obj/titi.o
j'utilise un makefile unique se trouvant dans la racine du projet...
l'idée étant de ne pas spécifier explicitement tous les finchiers donc j'ai utiliser:
pour avoir la liste des fichiers sources (c'est pas beau d'ailleur si qqun a mieux, je prends)
Code : Sélectionner tout - Visualiser dans une fenêtre à part SRC = $(sort $(wildcard $(SRCDIR)*.cpp $(SRCDIR)*/*.cpp $(SRCDIR)*/*/*.cpp $(SRCDIR)*/*/*/*.cpp))
j'arrive à avoir la liste des .o correspondant:
maintenant, problème... comment c'ezst t'y qu'on dois faire pour relier les deux tableaux
Code : Sélectionner tout - Visualiser dans une fenêtre à part OBJ = $(patsubst %.cpp,$(OBJDIR)%.o,$(notdir $(SRC)))
j'aurai bien fait un truc style
""" for i=1..nFichier, gcc -o $OBJ(i) $SRC(i) (si 'besoin') """
mais je sais pas comment avec makefile
avec 'besoin'= une des dépendances modifiée...
j'avais presque trouvé avec un for src in $(SRC) mais ensuite on ne peut rien faire avec $$src: pas ce modifications de chaines... c nul!!!
enfin bref, cela m'a tout de même permis d'écrasser tous les contenus de mes fichiers .cpp .... je pensais activé svn après ça, j'aurais du le faire avant!!!
Partager