Condividi tramite


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 nome 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 racchiusecltra parentesi quando richiamate. Specificare solo un oggetto $ 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, accoda un modificatore di macro e enclose 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 nonclè uded.

Macro di comandi e macro di opzioni

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, nelleclopzioni diuding. 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
Resource Compiler RC rc RFLAGS

Macro 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 uppercase. 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 edizione Standard T. L'uso del comando edizione Standard T 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 PATHdi 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.

Vedi anche

Macro e NMAKE