ich zu vermeiden hat ein Makefile, die zur Reinigung .o Dateien und ausführbaren Dateien eines .PHONY sauber Ziel definiert, das Ziel wie folgt aussieht:Wie „Keine solche Datei oder das Verzeichnis“ Fehler bei make clean` Makefile-Target
...
.PHONY : clean
clean:
rm $(addprefix $(vq_DIR),$(vq_OBJS)) \
$(addprefix $(vq_DIR),vq) \
$(addprefix $(covq_DIR),$(covq_OBJS)) \
$(addprefix $(covq_DIR),covq) \
$(addprefix $(covq_2_DIR),$(covq_2_OBJS)) \
$(addprefix $(covq_2_DIR),covq_2) \
$(addprefix $(covq_2_DIR),$(test_OBJS)) \
$(addprefix $(covq_2_DIR),test)
Alles funktioniert, wie es sollte, aber wenn einige dieser Dateien nicht existieren, löst rm
einen Fehler (keine solche Datei oder Verzeichnis), und die Ausgabe sagt, dass das Makefile Ziel fehlgeschlagen ist, wenn es eindeutig getan hat, was ich wollte.
Gibt es eine gute Möglichkeit, im Grunde die rm
Befehl zu "entfernen Sie diese Dateien, wenn sie existieren, und nicht beschweren, wenn sie nicht"? Ich habe die Manpage für rm
gesucht und keine solche Markierung gefunden.
Edit: Ich eigentlich nicht die Beschreibung der -f
Flagge in der Manual-Page bemerkte, ist dies die Lösung ist.
Danke: Glücklicherweise kann dieses Problem, indem ein Minuszeichen vor dem Befehl, dessen Status ignoriert leicht genug gelöst werden soll! Ich muss diese Option tatsächlich überflogen haben. Die Manpage sagt genau, was ich brauche, d. H. "Nicht existierende Dateien und Argumente ignorieren, niemals auffordern" – jameh
Noch besser: benutze '$ (RM)', was automatisch von GNU Makefile definiert wird. – thiagowfx