[Make] Problème(s) de dépendances non locales
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:
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:
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:
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 »." 8O
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 ^