Makefile führt ein anderes Ziel aus
Habe ich ein makefile strukturiert, so etwas wie dieses:
all :
compile executable
clean :
rm -f *.o $(EXEC)
Ich merkte, dass ich konsequent ausführen von "make clean" gefolgt von "clear" in meinem terminal vor dem ausführen von "make all". Ich habe gerne ein sauberes terminal, bevor ich versuchen und durchforsten das böse C++ - Kompilierung Fehler. So ich versucht, um einen 3. Ziel:
fresh :
rm -f *.o $(EXEC)
clear
make all
Dieser Werke, aber diese führt dann eine zweite Instanz machen (glaube ich). Ist es eine richtige Weg, um die gleiche Funktionalität zu erhalten, ohne ein 2. Instanz machen?
InformationsquelleAutor der Frage sas4740 | 2010-07-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eigentlich hast du Recht: es läuft eine andere Instanz machen.
Eine mögliche Lösung wäre:
Durch den Aufruf
make fresh
Sie erhalten zuerst dieclean
Ziel, dann dieclearscreen
läuftclear
und schließlichall
die nicht den job.BEARBEITEN
Was passiert im Fall von parallelen builds mit machen
-j
option?Es gibt einen Weg, der Festsetzung der Reihenfolge. Aus dem Handbuch, Kapitel 4.2:
Damit das makefile wird
InformationsquelleAutor der Antwort Dacav
Wenn Sie entfernt die
make all
Linie von Ihrer "frische" Ziel:Könnte man einfach den Befehl ausführen
make fresh all
der ausgeführt wird, wiemake fresh; make all
.Könnten einige betrachten dies als eine zweite Instanz zu machen, aber es ist sicherlich nicht ein sub-Instanz machen (machen innerhalb von einem machen), das ist das, was Ihr Versuch, die Schienen zu führen.
InformationsquelleAutor der Antwort Commander Cody
An der linux-Eingabeaufforderung:
clear & machen
InformationsquelleAutor der Antwort user359981