Bonjour à tous,
Je me suis récemment mis aux makfile avec plus ou moins de succès et j'arrive sur un point que je n'arrive pas à solutionner.
Tout d'abord je vais vous présenter l'archi de mes sources.
Dans le répertoire gnu il y à donc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Root | |---BuilDir | |---Projects | | | ---Gnu [ Makefile Makefile.in Makfile.out)] |---Src |---Rep1 | |---srcs1 [ Makefile (2)] |---srcs2 [ Makefile (3)] |---srcs3 [ Makefile (4)]
Un make file "maitre" qui permet de builder le projet complet,
makefile.in liste les répertoire utilisés et makefile.out liste les régles génériques
Dans Root/Src/rep1/srcs*:
Il y à un make file pour compiler les sources du répertoire en question, chacun des make file des répertoires src* inclus makefile.in et makefile.out pour être générique au maximum.
Mon problèmes est le suivant, je souhaite que les make files des répertoires root/srcs/rep1/srcs* places les *.o générés dans buildDir le makefile de chacun des répertoires à donc cette tête
La cible all dépend des *.o du répertoire de build, si on regarde makfile.out
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 BASE_DIR=../../.. include $(BASE_DIR)/projects/gnu/Makefile.in SRCS = $(wildcard *.c) OBJS = $(addprefix $(BUILDDIR),$(patsubst %.c,%.o,$(SRCS))) CFLAGS=\ $(INCLUDES) all: depend $(OBJS) include $(BASE_DIR)/projects/gnu/Makefile.out ifneq "$(MAKECMDGOALS)" "clean" -include $(DEPEND_FILE) endif
Le fichier de dépendances .depend créé des dépendances entre les *.o du répertoire de build et les différents fichier liéés aux *.o
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 depend:$(DEPEND_FILE) $(DEPEND_FILE): @echo "--> Generating dependences" @$(MAKEDEPEND) -f- -- $(CFLAGS) -- $(SRCS) -p$(BUILDDIR) > $(DEPEND_FILE) 2>/dev/null $(BUILDDIR)/%.o : %.c @echo "--> Compiling $<" @$(CC) $(CFLAGS) $(LDFLAGS) -o $@ -c $< clean: $(RM) $(BUILDDIR)
Le problèmes est que lorsque je lance make, les dépendances sont bien générée mais juste ensuite make me dit "make: Rien à faire pour « all »."
En lançant make -d je vois des traces ou make réalise qu'il faut reconstruire les cibles *.o mais il ne semble pas utiliser la règles du makefile.out pour construire la cible...
J'avoue être un peu perdu la :s, si quelqu'un voit mon erreur qu'il n'hésite surtout pas ^
Partager