J'ai plusieurs projets C et C++ qui suivent tous une structure de base que j'utilise depuis un moment. Mes fichiers source vont dans src/*.c
, fichiers intermédiaires dans obj/*.[do]
, et l'exécutable réel dans le répertoire de premier niveau.Sauter la génération de dépendance makefile pour certaines cibles (par exemple `clean`)
Mes makefiles suivent à peu près ce modèle:
# The final executable
TARGET := something
# Source files (without src/)
INPUTS := foo.c bar.c baz.c
# OBJECTS will contain: obj/foo.o obj/bar.o obj/baz.o
OBJECTS := $(INPUTS:%.cpp=obj/%.o)
# DEPFILES will contain: obj/foo.d obj/bar.d obj/baz.d
DEPFILES := $(OBJECTS:%.o=%.d)
all: $(TARGET)
obj/%.o: src/%.cpp
$(CC) $(CFLAGS) -c -o [email protected] $<
obj/%.d: src/%.cpp
$(CC) $(CFLAGS) -M -MF [email protected] -MT $(@:%.d=%.o) $<
$(TARGET): $(OBJECTS)
$(LD) $(LDFLAGS) -o [email protected] $(OBJECTS)
.PHONY: clean
clean:
-rm -f $(OBJECTS) $(DEPFILES) $(RPOFILES) $(TARGET)
-include $(DEPFILES)
Maintenant, je suis au point où je suis CONTeNANT pour un système Debian. J'utilise debuild
pour construire le paquet source Debian, et pbuilder
pour construire le paquet binaire. L'étape debuild
doit uniquement exécuter la cible clean
, mais même cela entraîne la génération et l'inclusion des fichiers de dépendance.
En bref, ma question est vraiment: Puis-je en quelque sorte empêcher faire de générer des dépendances quand tout ce que je veux est d'exécuter la cible clean
?