Es gibt drei nicht verwandte Verwendungen von @
hier.
In $@
ist das Zeichen @
der Name einer automatischen Variablen , die in einer Regel verwendet werden kann. Der Wert dieser Variablen ist das Ziel, das die Regel erstellt.
Wenn @
es ganz am Anfang einer Rezeptzeile (Befehlszeile) direkt nach dem Tabulatorzeichen verwendet wird, wird der Befehl nicht gedruckt, wenn er ausgeführt werden soll.
Der Charakter @
anderswo ist nichts Besonderes.
So bauen Sie in Ihrem Beispiel program
:
- Die
file
Funktion wird aufgerufen. Es schreibt die Abhängigkeiten des Ziels ( $^
automatische Variable) in die Datei program.in
.
Der in der Variablen gespeicherte Befehl wird CMD
mit den in der Variablen gespeicherten Parametern CMDFLAGS
und dem zusätzlichen Parameter ausgeführt @program.in
. Was dies tut, hängt davon ab, was CMD
ist.
Der Befehl rm program.in
wird ausgeführt, ohne ihn zuerst zu drucken.
Einige Befehle behandeln einen Parameter, der mit beginnt, @
als Angabe einer Datei, aus der weitere Parameter gelesen werden sollen. Dies ist eine DOS-Konvention, die zustande kam, weil DOS eine strenge Begrenzung der Befehlszeilenlänge hatte und keine Möglichkeit bestand, die Ausgabe eines Befehls in eine Befehlszeile zu interpolieren. In der Unix-Welt ist dies ungewöhnlich, da Unix diese Einschränkungen nicht aufweist. Die Wirkung des Rezepts ist also wahrscheinlich die gleiche wie
$(CMD) $(CMDFLAGS) $(OBJECTS)
Gilles 'SO - hör auf böse zu sein'
quelle
>[email protected]
als Dateimodus verwendet wird ... aber es ist auf seine eigene Weise nützlich ... danke cuonglm ...