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.

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)]
Dans le répertoire gnu il y à donc:
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

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
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
 
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 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

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 ^