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 als Dateinamen vordefiniert, die in der Abhängigkeit angegeben sind (keine vollständigen Dateinamenspezifikationen auf dem Datenträger). Diese Makros müssen beim Aufrufen nicht in Klammern enclosed werden. Geben Sie nur eine $ wie gezeigte an.

Makro Bedeutung
$@ Der vollständige Name des aktuellen Ziels (Pfad, Basisname, Erweiterung), wie derzeit angegeben.
$$@ Der vollständige Name des aktuellen Ziels (Pfad, Basisname, Erweiterung), wie derzeit angegeben. Nur als abhängig 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 gebenclSie das geänderte Makro in Klammern an.

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 als /$(MAKEFLAGS). Die /F Option befindet sich nicht included.

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 neu definiert werden, um einen Teil oder alle Befehlszeilen inclUding-Optionen darzustellen. Optionsmakros generieren eine NULL-Zeichenfolge, wenn links undefiniert.

Tool Befehlsmakro Definiert als Optionsmakro
Makroassembler AS ml oder ml64 AFLAGS
C-Compiler CC cl CFLAGS
C++ Compiler CPP cl CPPFLAGS
C++ Compiler CXX cl CXXFLAGS
Resource Compiler RC rc RFLAGS

Umgebungsvariable Makros

NMAKE erbt Makrodefinitionen für Umgebungsvariablen, die vor beginn der Sitzung vorhanden sind. Wenn eine Variable in der Betriebssystemumgebung festgelegt wurde, ist sie als NMAKE-Makro verfügbar. Die geerbten Namen werden in "uppercase" 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.

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 als Zeichenfolge definiert 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 als Anfang eines Makroaufrufs. Die Verwendung des Makros kann zu unerwartetem Verhalten führen.

Siehe auch

Makros und NMAKE