Macro speciali di NMAKE
NMAKE fornisce diverse macro speciali per rappresentare vari nomi di file e comandi. Un uso per alcune di queste macro è nelle regole di inferenza predefinite. Analogamente a tutte le macro, le macro fornite da NMAKE fanno distinzione tra maiuscole e minuscole.
Macro di nomi file
Le macro nome file sono predefinite come nomi file specificati nella dipendenza (non specifiche del nome file complete sul disco). Queste macro non devono essere racchiuse tra parentesi quando richiamate; specificare solo un $
come illustrato.
Macro | significato |
---|---|
$@ |
Nome completo della destinazione corrente (percorso, nome di base, estensione), come specificato attualmente. |
$$@ |
Nome completo della destinazione corrente (percorso, nome di base, estensione), come specificato attualmente. Valido solo come dipendente da una dipendenza. |
$* |
Percorso e nome di base corrente meno estensione file. |
$** |
Tutti i dipendenti della destinazione corrente. |
$? |
Tutti i dipendenti con un timestamp successivo rispetto alla destinazione corrente. |
$< |
File dipendente con un timestamp successivo rispetto alla destinazione corrente. Valido solo nei comandi nelle regole di inferenza. |
Per specificare parte di una macro nome file predefinita, aggiungere un modificatore di macro e racchiudere la macro modificata tra parentesi.
Modificatore | Parte del nome file risultante |
---|---|
D |
Unità più directory |
B |
Nome di base |
F |
Nome di base più estensione |
R |
Unità più directory e nome di base |
Macro di ricorsione
Usare le macro di ricorsione per chiamare NMAKE in modo ricorsivo. Le sessioni ricorsive ereditano le macro e le informazioni della riga di comando e Tools.ini
delle variabili di ambiente. Non ereditano regole di inferenza definite dal makefile o .SUFFIXES
specifiche .PRECIOUS
. Esistono tre modi per passare macro a una sessione NMAKE ricorsiva:
- Impostare una variabile di ambiente con un
SET
comando prima della chiamata ricorsiva. - Definire una macro nel comando per la chiamata ricorsiva.
- In alternativa, definire una macro in
Tools.ini
.
Macro | Definizione |
---|---|
MAKE |
Comando usato originariamente per richiamare NMAKE. La $(MAKE) macro fornisce il percorso completo a nmake.exe . |
MAKEDIR |
Directory corrente quando NMAKE è stato richiamato. |
MAKEFLAGS |
Opzioni attualmente attive. Usare come /$(MAKEFLAGS) . L'opzione /F non è inclusa. |
Macro di comando e di opzione
Le macro dei comandi sono predefinite per i prodotti Microsoft. Le macro di opzioni rappresentano le opzioni per questi prodotti e non sono definiti per impostazione predefinita. Entrambi vengono usati nelle regole di inferenza predefinite e possono essere usati nei blocchi di descrizione o nelle regole di inferenza definite dall'utente. Le macro dei comandi possono essere ridefinite per rappresentare parte o tutte le righe di comando, incluse le opzioni. Le macro di opzioni generano una stringa Null se non definita.
Strumento | Macro dei comandi | Definito come | Macro Opzioni |
---|---|---|---|
Macro Assembler | AS |
ml oppure ml64 |
AFLAGS |
Compilatore C | CC |
cl |
CFLAGS |
Compilatore C++ | CPP |
cl |
CPPFLAGS |
Compilatore C++ | CXX |
cl |
CXXFLAGS |
Compilatore di risorse | RC |
rc |
RFLAGS |
Macro di variabili di ambiente
NMAKE eredita le definizioni di macro per le variabili di ambiente esistenti prima dell'inizio della sessione. Se è stata impostata una variabile nell'ambiente del sistema operativo, è disponibile come macro NMAKE. I nomi ereditati vengono convertiti in lettere maiuscole. L'ereditarietà si verifica prima della pre-elaborazione. Utilizzare l'opzione /E per fare in modo che le macro ereditate dalle variabili di ambiente eseseguono l'override di qualsiasi macro con lo stesso nome nel makefile.
Le macro variabili di ambiente possono essere ridefinite nella sessione e questa modifica la variabile di ambiente corrispondente. È anche possibile modificare le variabili di ambiente con il comando SET. L'uso del comando SET per modificare una variabile di ambiente in una sessione non modifica tuttavia la macro corrispondente.
Ad esempio:
PATH=$(PATH);\nonesuch
all:
echo %%PATH%%
In questo esempio la modifica della PATH
variabile PATH
di ambiente corrispondente viene aggiunta \nonesuch
al percorso.
Se una variabile di ambiente è definita come stringa che sarebbe sintatticamente errata in un makefile, non viene creata alcuna macro e non viene generato alcun avviso. Se il valore di una variabile contiene un segno di dollaro ($), NMAKE lo interpreta come inizio di una chiamata di macro. L'utilizzo della macro può causare un comportamento imprevisto.