Ich habe ein Programm für eine Aufgabe geschrieben, das seine Ausgabe auf stdout drucken soll. Die Zuweisungsspezifikation erfordert die Erstellung eines Makefiles, das beim Aufrufen make run > outputFile
das Programm ausführen und die Ausgabe in eine Datei schreiben soll, deren SHA1-Fingerabdruck mit dem in der Spezifikation angegebenen identisch ist.
Mein Problem ist, dass mein Makefile:
...
run:
java myprogram
druckt auch den Befehl, der mein Programm ausführt (z. B. Java Myprogram), in die Ausgabedatei, sodass meine Datei diese zusätzliche Zeile enthält, wodurch der Fingerabdruck falsch ist.
Gibt es eine Möglichkeit, einen Befehl auszuführen, ohne dass der Befehlsaufruf in der Befehlszeile wiedergegeben wird?
make -s
macht das und IMHO ist hier sowieso eine viel bessere Lösung. Es wurde kürzlich als separate Antwort auf diese Frage veröffentlicht.Noch einfacher zu bedienen
make -s
(Silent Mode)!quelle
@
Befehlen erschwert das Debuggen und sorgt für viel Unordnung..SILENT:
Ziel verwenden. Siehe make.mad-scientist.net/managing-recipe-echoing-Wall
es hat, druckt sie immer noch. Natürlich, warum sollten Sie verwenden,-s
wenn Sie auch Warnungen sehen möchten?Sie können auch verwenden
.SILENT
In diesem Fall
make hi
wird der Befehl ausgegeben, abermake run
nicht ausgegeben.quelle
Der Effekt, dem Befehl ein vorangestellt zu haben,
@
kann auf einen Abschnitt erweitert werden, indem der Befehl mit einem abschließenden Backslash in der Zeile erweitert wird. Wenn ein.PHONY
Befehl zur Unterdrückung der Ausgabe gewünscht wird, kann der Abschnitt mit Folgendem beginnen:quelle