Befehle in einem Makefile
Ein Beschreibungsblock oder eine Ableitungsregel gibt einen Befehlsblock an, der ausgeführt werden soll, wenn die Abhängigkeit veraltet ist. NMAKE zeigt jeden Befehl vor der Ausführung an, es sei denn/S
, , .SILENT
, oder !CMDSWITCHES
@
wird verwendet. NMAKE sucht nach einer übereinstimmenden Ableitungsregel, wenn auf einen Beschreibungsblock kein Befehlsblock folgt.
Ein Befehlsblock enthält einen oder mehrere Befehle, die jeweils in einer eigenen Zeile enthalten sind. Zwischen Abhängigkeit oder Regel und Befehlsblock kann keine leere Zeile angezeigt werden. Eine Zeile, die nur Leerzeichen oder Tabstopps enthält, kann jedoch angezeigt werden. Diese Zeile wird als NULL-Befehl interpretiert, und es tritt kein Fehler auf. Leere Zeilen sind zwischen Befehlszeilen zulässig.
Eine Befehlszeile beginnt mit einem oder mehreren Leerzeichen oder Registerkarten. Ein umgekehrter Schrägstrich (\
) gefolgt von einem Zeilenumbruchzeichen wird als Leerzeichen im Befehl interpretiert. Verwenden Sie einen umgekehrten Schrägstrich am Ende einer Zeile, um einen Befehl in der nächsten Zeile fortzusetzen. NMAKE interpretiert den umgekehrten Schrägstrich buchstäblich, wenn ein anderes Zeichen, einschließlich eines Leerzeichens oder tabstopps, dem umgekehrten Schrägstrich folgt.
Ein Befehl vor einem Semikolon (;
) kann in einer Abhängigkeitszeile oder -ableitungsregel angezeigt werden, unabhängig davon, ob ein Befehlsblock folgt oder nicht:
project.obj : project.c project.h ; cl /c project.c
Befehlsmodifizierer
Sie können einen oder mehrere Befehlsmodifizierer vor einem Befehl angeben, optional durch Leerzeichen oder Registerkarten getrennt. Wie bei Befehlen müssen Modifizierer eingezogen werden.
Modifizierer | Zweck |
---|---|
@ Befehl |
Verhindert die Anzeige des Befehls. Die Anzeige durch Befehle wird nicht unterdrückt. Standardmäßig echot NMAKE alle ausgeführten Befehle. Wird /S verwendet, um die Anzeige für die gesamte Makefile zu unterdrücken; verwenden, .SILENT um die Anzeige für einen Teil der Makefile zu unterdrücken. |
- Befehl [Zahl] |
Deaktiviert die Fehlerüberprüfung auf Befehl. Standardmäßig hält NMAKE an, wenn ein Befehl einen Nichtzero-Ausgangscode zurückgibt. Wenn "-number" verwendet wird, stoppt NMAKE, wenn der Ausgangscode die Zahl überschreitet. Leerzeichen oder Registerkarten können nicht zwischen Strich und Zahl angezeigt werden. Mindestens ein Leerzeichen oder eine Registerkarte muss zwischen Zahl und Befehl angezeigt werden. Verwenden Sie diese Option, um die Fehlerüberprüfung für die gesamte Makefile-Datei zu deaktivieren. Verwenden Sie /I diese Option .IGNORE , um die Fehlerüberprüfung für einen Teil der Makefile zu deaktivieren. |
! befehl |
Führt den Befehl für jede abhängige Datei aus, wenn der Befehl $** (alle abhängigen Dateien in der Abhängigkeit) oder $? (alle abhängigen Dateien in der Abhängigkeit mit einem späteren Zeitstempel als dem Ziel) verwendet wird. |
Syntax für Dateinamenteile
Die Syntax von Dateinamenteilen in Befehlen stellt Komponenten des ersten abhängigen Dateinamens dar (dies kann eine implizierte abhängige Datei sein). Filename components are the file's drive, path, base name, and extension as specified, not as it exists on disk. Wird %s
verwendet, um den vollständigen Dateinamen darzustellen. Verwenden Sie %|
[Teile]F
(ein vertikales Balkenzeichen folgt dem Prozentsymbol), um Teile des Dateinamens darzustellen, wobei Teile null oder mehr der folgenden Buchstaben in beliebiger Reihenfolge sein können.
Brief | Beschreibung |
---|---|
Kein Buchstabe | Vollständiger Name (identisch mit %s ) |
d |
Antrieb |
p |
Pfad |
f |
Dateibasisname |
e |
Dateierweiterung |
Beispiel: Wenn der Dateiname lautet c:\prog.exe
:
%s
wird zuc:\prog.exe
%|F
wird zuc:\prog.exe
%|dF
wird zuc
%|pF
wird zuc:\
%|fF
wird zuprog
%|eF
wird zuexe
Worüber möchten Sie mehr erfahren?
Inlinedateien in einer Makefile