Ich habe mehrere C- und C++ - Projekte, die alle einer Grundstruktur folgen, die ich schon seit einiger Zeit verwende. Meine Quelldateien gehen in src/*.c
, Zwischendateien in obj/*.[do]
und die tatsächliche ausführbare Datei in dem Verzeichnis der obersten Ebene.Makefile-Abhängigkeitsgenerierung für bestimmte Ziele überspringen (z. B. `clean`)
folgt Mein Makefiles in etwa dieser Vorlage:
# 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)
nun an dem Punkt, ich bin, wo ich dies ein Debian-System für die Verpackung. Ich verwende debuild
, um das Debian-Quellpaket zu erstellen, und pbuilder
, um das Binärpaket zu erstellen. Der Schritt debuild
muss nur das Ziel clean
ausführen, aber selbst dies führt dazu, dass die Abhängigkeitsdateien generiert und eingefügt werden.
Kurz gesagt, meine Frage ist wirklich: Kann ich irgendwie verhindern, dass Abhängigkeiten zu erzeugen, wenn alles, was ich will, das clean
Ziel ist?