Besondere NMAKE-Makros
NMAKE stellt mehrere spezielle Makros zur Darstellung verschiedener Dateinamen und Befehle bereit. Eine Verwendung für einige dieser Makros befindet sich in den vordefinierten Ableitungsregeln. Wie bei allen Makros wird bei den von NMAKE bereitgestellten Makros die Groß-/Kleinschreibung beachtet.
Dateinamenmakros
Dateinamenmakros sind vordefinierte as Dateinamen, die in der Abhängigkeit angegeben sind (keine vollständigen Dateinamenspezifikationen auf dem Datenträger). Diese Makros müssen beim Aufrufen nicht in Klammern eingeschlossen werden. geben Sie nur eine $
as angezeigte Angabe an.
Makro | Bedeutung |
---|---|
$@ |
Der vollständige Name des aktuellen Ziels (Pfad, Basisname, Erweiterung), as derzeit angegeben. |
$$@ |
Der vollständige Name des aktuellen Ziels (Pfad, Basisname, Erweiterung), as derzeit angegeben. Es ist nur as ein abhängiger Wert in einer Abhängigkeit gültig. |
$* |
Pfad und Basisname des aktuellen Ziels minus Dateierweiterung. |
$** |
Alle Abhängigen des aktuellen Ziels. |
$? |
Alle Abhängigen mit einem späteren Zeitstempel als dem aktuellen Ziel. |
$< |
Abhängige Datei mit einem späteren Zeitstempel als das aktuelle Ziel. Nur in Befehlen in Ableitungsregeln gültig. |
Um einen Teil eines vordefinierten Dateinamenmakros anzugeben, fügen Sie einen Makromodifizierer an, und schließen Sie das geänderte Makro in Klammern ein.
Modifizierer | Resultierender Dateinameteil |
---|---|
D |
Laufwerk plus Verzeichnis |
B |
Basisname |
F |
Basisname plus Erweiterung |
R |
Laufwerk plus Verzeichnis plus Basisname |
Rekursionsmakros
Verwenden Sie Rekursionsmakros, um NMAKE rekursiv aufzurufen. Rekursive Sitzungen erben Befehlszeilen- und UmgebungsvariablenMakros und Tools.ini
-informationen. Sie erben keine makefile-defined Inference-Regeln oder .SUFFIXES
.PRECIOUS
Spezifikationen. Es gibt drei Möglichkeiten, Makros an eine rekursive NMAKE-Sitzung zu übergeben:
- Legen Sie eine Umgebungsvariable mit einem
SET
Befehl vor dem rekursiven Aufruf fest. - Definieren Sie ein Makro im Befehl für den rekursiven Aufruf.
- Oder definieren Sie ein Makro in
Tools.ini
.
Makro | Definition |
---|---|
MAKE |
Der Befehl, der ursprünglich zum Aufrufen von NMAKE verwendet wurde. Das $(MAKE) Makro gibt den vollständigen Pfad zu nmake.exe . |
MAKEDIR |
Aktuelles Verzeichnis, als NMAKE aufgerufen wurde. |
MAKEFLAGS |
Optionen, die derzeit wirksam sind. Verwenden Sie as/$(MAKEFLAGS) . Die /F Option ist nicht enthalten. |
Befehlsmakros und Optionsmakros
Befehlsmakros sind für Microsoft-Produkte vordefinierte. Optionsmakros stellen Optionen für diese Produkte dar und sind standardmäßig nicht definiert. Beide werden in vordefinierten Rückschlussregeln verwendet und können in Beschreibungsblöcken oder benutzerdefinierten Ableitungsregeln verwendet werden. Befehlsmakros können so neu definiert werden, dass sie Einen Teil oder alle Befehlszeilen darstellen, einschließlich Optionen. Optionsmakros generieren eine NULL-Zeichenfolge, wenn links undefiniert.
Tool | Befehlsmakro | Definiert as | Optionsmakro |
---|---|---|---|
Makroassembler | AS |
ml oder ml64 |
AFLAGS |
C-Compiler | CC |
cl |
CFLAGS |
C++ Compiler | CPP |
cl |
CPPFLAGS |
C++ Compiler | CXX |
cl |
CXXFLAGS |
Ressourcencompiler | RC |
rc |
RFLAGS |
Makros von Umgebungsvariablen
NMAKE erbt Makrodefinitionen für Umgebungsvariablen, die vor beginn der Sitzung vorhanden sind. Wenn eine Variable in der Betriebssystemumgebung festgelegt wurde, ist sie ein NMAKE-Makro verfügbar as . Die geerbten Namen werden in Großbuchstaben konvertiert. Vererbung erfolgt vor der Vorverarbeitung. Verwenden Sie die Option "/E", um zu bewirken, dass Makros, die von Umgebungsvariablen geerbt wurden, alle Makros mit demselben Namen in der Makefile außer Kraft setzen.
Umgebungsvariable Makros können in der Sitzung neu definiert werden, und dadurch wird die entsprechende Umgebungsvariable geändert. Sie können auch Umgebungsvariablen mit dem BEFEHL SET ändern. Wenn Sie den BEFEHL SET verwenden, um eine Umgebungsvariable in einer Sitzung zu ändern, wird das entsprechende Makro jedoch nicht geändert.
Zum Beispiel:
PATH=$(PATH);\nonesuch
all:
echo %%PATH%%
In diesem Beispiel ändert sich das Ändern PATH
der entsprechenden Umgebungsvariable PATH
; sie fügt an Ihren Pfad an \nonesuch
.
Wenn eine Umgebungsvariable eine Zeichenfolge definiert as ist, die in einer Makefile syntaktisch falsch wäre, wird kein Makro erstellt und keine Warnung generiert. Wenn der Wert einer Variablen ein Dollarzeichen ($) enthält, interpretiert NMAKE ihn as am Anfang eines Makroaufrufs. Die Verwendung des Makros kann zu unerwartetem Verhalten führen.