J'ai un ensemble commun de règles de création utilisées dans plusieurs répertoires. Chaque marque est très simple:comment configurer les dépendances entre répertoires dans gnu make
BASEDIR:=../..
TARGET:=theTarget
include Makefile.include
À moins surchargée, j'ai une valeur par défaut du code source:
SRC:= $(wildcard *.cpp)
Nous voulons construire les fichiers objet dans un répertoire (pas avec les sources), si:
OBJDIR:= ../obj
BARE:= $(foreach f,$(SRC),$(notdir $(f))
OBJ:= $(foreach o,$(BARE),$(OBJDIR)/$(o).o)
J'ai donc les fichiers .o, mais je dois chacun pour tirer une règle basée sur la cpp tant que le répertoire est connu, c'est facile:Cependant, dans certains des répertoires, il existe des fichiers groupés arbitrairement dans les sous-répertoires. Je suis temporairement ce problème en inscrivant tous dans mon makefile central:
$(OBJDIR)/%.o: a/%.cpp
build...
$(OBJDIR)/%.o: b/%.cpp
build...
Mais ce que je voudrais faire est d'être en mesure de préciser les répertoires de construction dans une variable si possible. Est-il possible de mettre en place les dépendances
$(OBJDIR)/x.o: a/x.cpp
$(OBJDIR)/y.o: a/y.cpp
et
$(OBJDIR)/z.o: b/z.cpp
sans avoir manuellement à la liste les dépendances?
Pour cette question, j'ai aussi des fichiers de dépendance (.d)
$(DEPDIR)/%.d: $(SRC)
que je veux mettre en place des dépendances en fonction de ce qui est dans la source. Par exemple: .deps/xd: a/g ++ x.cpp -MM -MT $ (objdir)/$ (notDIR $ @) < $ -o $ (DEPDIR)/$ (notDIR $ @)
Existe-t-il un moyen facile de générer ces règles sans les écrire pour chaque répertoire?
est ici où je suis les informations sur la génération des fichiers .d en premier lieu: http://mad-scientist.net/make/autodep.html#advanced
Le but à la fin est d'inclure tous les fichiers .d et ont généré automatiquement arbre dépendance des fichiers . Mais c'est la dernière partie. Je ne sais pas comment utiliser les fichiers .d. Est-ce que je les inclut tous?
include $(DEPDIR)/%.d
ne fonctionne pas. Je peux les chat tous ensemble dans une règle: cat $ (DEP)> $ (DEPDIR)/deps.inc
puis
include deps.inc
Merci pour l'include $ (DEPDIR)/*. D – Dov