Wie schreibt man eine Makefile-Regel auf Dateien entfernen (reinigen) nur, wenn die Dateien vorhanden sind?

Sieht es für mich wie Makefile-Regeln können grob klassifiziert werden in "positiv" und "negativ" sind: "positive" Regeln erstellen fehlt oder aktualisieren Sie veraltete Dateien, während "negative" diejenigen Dateien löschen.

Schriftlich Voraussetzungen für eine "positiv" - Regeln ganz einfach: wenn das Ziel und die Voraussetzung sind Dateinamen, make standardmäßig läuft das Rezept, wenn das Ziel fehlt oder veraltet ist (eine fehlende Datei in diesem Kontext betrachtet werden kann, als eine unendlich alte Datei).

Jedoch, betrachten eine "negative" Regel, zum Beispiel für Ziel -clean. Eine übliche Art und Weise zu schreiben, es scheint so etwas wie dieses:

clean:
    rm -f *.log *.synctex.gz *.aux *.out *.toc

Dies ist eindeutig nicht der beste Weg, dies zu tun:

  1. rm ausgeführt wird, selbst wenn es nichts zu tun,

  2. seine Fehlermeldungen und exit-status müssen unterdrückt werden mit -f Flagge, die andere (möglicherweise unerwünschte) Effekte, und

  3. die Tatsache, dass es nichts zu tun für Ziel clean ist nicht an den Benutzer gemeldet, im Gegensatz zu dem, was ist normal für die "positiven" Ziele.

Meine Frage ist: wie Schreibe ich eine Makefile-Regel, die verarbeitet werden, indem make nur dann, wenn bestimmte Dateien vorhanden sind? (Wie, was wäre nützlich für make clean.)

  • Also deine Frage ist nicht einfach über die Unterdrückung der Fehlermeldungen mit einer - Präfix? also -rm *.log *.synctex.gz *.aux *.out *.toc
  • Ja, ich glaube, es muss einen Weg, eine Regel zu schreiben, so dass keine Fehler begangen werden, nicht einfach nicht gemeldet. Ich würde auch schätzen eine höfliche Meldung von make, dass es nichts zu entfernen (und nichts wurde entfernt).
InformationsquelleAutor Alexey | 2015-11-07
Schreibe einen Kommentar