je les suivantes Makefile (réduite à ne pas tenir compte des choses non pertinentes):Makefile construit tout à chaque fois
BUILD_DIR=./build
OBJS = \
$(BUILD_DIR)/main.o \
$(BUILD_DIR)/common.o \
...
roo: $(OBJS)
$(CXX) -o [email protected] $(OBJS) $(LFLAGS)
.PHONY: $(BUILD_DIR)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)/passes
$(BUILD_DIR)/%.o: src/%.cpp $(BUILD_DIR)
$(CXX) -o [email protected] -c $< $(CFLAGS)
Cependant, chaque fichier objet est recompilé à chaque fois, même pensé que je suis la règle d'utiliser directement [email protected]
dans chaque cible non-bidon.
Je ne pense pas que ce soit un doublon de this parce que j'applique le sous-répertoire dans la règle plutôt que dans la recette, mais je peux me tromper? Comment puis-je faire pour suivre correctement les dépendances dans le répertoire de construction?
Merci; le corrige parfaitement –
Ou vous pouvez créer 'create-dir:' PHONY-target. Dans cette cible, vous pouvez exécuter 'mkdir -p $ {BUILD_DIR}/passes' et la dépendance' $ {BUILD_DIR} /%. O' sera 'create-dir' - vous pouvez donc la réutiliser si nécessaire. – uzsolt
Il ne sert à rien de faire le test. Vous pourriez aussi bien lancer 'mdir -p'. Ce sera un no-op si le répertoire existe déjà. – MadScientist