So vermeiden Sie "Keine solche Datei oder kein Verzeichnis" Fehler beim Makefile-Ziel "Make clean"

7

Ich habe ein Makefile, das ein .PHONY clean-Ziel zum Bereinigen von .o-Dateien und ausführbaren Dateien definiert, das wie folgt aussieht:

%Vor%

Alles funktioniert wie es sollte, aber wenn einige dieser Dateien nicht existieren, löst rm einen Fehler aus (keine solche Datei oder Verzeichnis), und die Ausgabe sagt, dass das Makefile-Ziel fehlgeschlagen ist, als es eindeutig das getan hat, was ich wollte .

Gibt es eine gute Möglichkeit, dem Befehl rm im Grunde zu sagen: "Entferne diese Dateien, wenn sie existieren, und beschwere dich nicht, wenn sie es nicht tun"? Ich habe die Manpage nach rm gesucht und keine solche Markierung gefunden.

Edit: Ich habe tatsächlich die Beschreibung des -f Flags in der Manpage nicht bemerkt, das ist die Lösung.

    
jameh 22.02.2014, 03:26
quelle

4 Antworten

15

Verwenden Sie rm -f (oder besser noch $(RM) , bereitgestellt von den integrierten make -Regeln, die mit make -p ermittelt werden können) anstelle von rm in Ihrer clean -Regel.

    
Basile Starynkevitch 22.02.2014, 03:28
quelle
4
  

rm -f

wird FORCE und keinen Fehler ausgeben

    
user2815333 22.02.2014 03:29
quelle
2
  

Wenn Ziele versagen

     

Wenn ein Ziel ausgeführt wird, gibt es einen Status basierend darauf, ob oder nicht   Es war erfolgreich - wenn ein Ziel fehlschlägt, wird make keine ausführen   Ziele, die davon abhängen. Zum Beispiel im obigen Beispiel, wenn   "clean" schlägt fehl, und rebuild führt das "build" -Ziel nicht aus.   Leider kann dies passieren, wenn keine zu entfernende Core-Datei vorhanden ist.   Glücklicherweise kann dieses Problem leicht gelöst werden, indem man ein   Minuszeichen vor dem Befehl, dessen Status ignoriert werden soll:

%Vor%

~ Ссылка

    
MartenBE 14.11.2016 12:36
quelle
0

Ich habe mit rm aufgegeben. Der folgende Befehl löscht Dateien und Verzeichnisse.

%Vor%

Um nur Dateien oder nur Verzeichnisse zu entfernen, gibt es die Option -type:

%Vor%

Eigentlich habe ich ein kleines Skript (basierend auf diesem Snippet) namens bomb erstellt, das Dateien entfernt, ohne sich zu beschweren: Ссылка

    
ling 30.06.2016 13:35
quelle

Tags und Links