Wie zu vermeiden, "No such file or directory" Fehler bei `make clean` Makefile target
Habe ich ein Makefile, die definiert, ein .PHONY clean-Ziel zur Reinigung .o-Dateien und ausführbare Dateien, die Zielgruppe sieht so aus:
...
.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 eine dieser Dateien nicht vorhanden sind, rm
wirft einen Fehler (Keine solche Datei oder Verzeichnis), und die Ausgabe sagt, dass die Makefile-Ziel gescheitert, als es deutlich machte, was ich wollte.
Ist es ein guter Weg, um im Grunde sagen die rm
Befehl "entfernen Sie diese Dateien, wenn Sie vorhanden sind, und Sie beschweren sich nicht, wenn Sie nicht"? Ich sah Sie in der manpage für rm
, und fand kein solches flag.
Edit: ich habe tatsächlich nicht bemerkt, die Beschreibung des -f
fahne in die manpage, das ist die Lösung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
rm -f
(oder noch besser$(RM)
durch integriertemake
Regeln, die gefunden werden können, mitmake -p
) stattrm
in Ihremclean
Regel.ignore nonexistent files and arguments, never prompt
$(RM)
, die automatisch definiert durch die GNU Makefile.ZWINGEN wird, und nicht die Ausgabe aller Fehler
~ http://www.cprogramming.com/tutorial/makefiles.html
make clean
obwohl. Es scheint mir, dass es erst ignoriert, wenn das Ziel war, eine Abhängigkeit zu einem anderen Ziel.Ich habe es aufgegeben mit rm.
Der folgende Befehl entfernt Dateien und Verzeichnisse.
Entfernen, nur Dateien oder nur Verzeichnisse, es ist die -type option:
Eigentlich habe ich erstellen ein kleines Skript (basierend auf diesem snippet) mit dem Namen Bombe, dass die Dateien gelöscht, ohne zu beschweren: https://github.com/lingtalfi/bomb
Spät zur party, aber hier ist eine andere Lösung, die in Zusammenarbeit mit unserem schrulligen build-Umgebung:
Ausgabe nicht frei, sondern reduziert und ordnungsgemäß beendet:
Habe ich versucht, eine Menge von alternativen, die alle hatten Fragen, bevor Sie sich auf diese ein.