2017-09-09 5 views
0

Ich möchte make alle Dateien mit Ausnahme der Quelldateien und die Make-Regeldatei (dh der Datei makefile genannt) entfernen, so fügte ich eine gefälschte Regel am Ende meines makefile:Warum beschwert sich Making "Nichts zu tun für 'sauber'"?

.PHONY:clean 

clean: 
    $(shell ls | grep -v "[.][ch]" | grep -v makefile | xargs rm) 

Das tut, was ich wollen. Aber make immer beklagt

make: Nothing to be done for 'clean'. 

Nachdem ich make clean laufen. Warum erscheint diese Nachricht? Und wie kann ich es verschwinden lassen?

Antwort

1

Die Verwendung von $(shell ...) ist nicht erforderlich. Es führt den Befehl aus, dann wird die Ausgabe verwendet, als ob sie Teil des Makefiles wäre. Es gibt keine Ausgabe, daher lautet die resultierende Regel:

clean: 

, d.h. die tatsächliche Liste der Befehle zum Aktualisieren des sauberen Ziels ist leer.

+0

Danke für die Erklärung! Ich habe die '$ (Shell)' entfernt und es hat funktioniert. –