Sdílet prostřednictvím


Speciální makra NMAKE

NMAKE poskytuje několik speciálních maker, která představují různé názvy souborů a příkazy. Jedno použití pro některá z těchto maker je v předdefinovaných pravidlech odvozování. Stejně jako u všech maker rozlišují makra poskytovaná nástrojem NMAKE malá a velká písmena.

Makra názvů souborů

Makra názvu souboru jsou předdefinovaná jako názvy souborů zadaných v závislosti (nikoli jako úplné specifikace názvu souboru na disku). Tato makra nemusí být při vyvolání uzavřena do závorek; zadejte pouze $, jak je znázorněno.

Makro Význam
$@ Úplný název aktuálního cíle (cesta, základní název, přípona) je aktuálně zadaný.
$$@ Úplný název aktuálního cíle (cesta, základní název, přípona) je aktuálně zadaný. Platné pouze jako závislé v závislosti.
$* Cesta k aktuálnímu cíli a základní název minus přípona souboru.
$** Všechny závislé na aktuálním cíli.
$? Všechny závislé osoby s pozdějším časovým razítkem než aktuální cíl.
$< Závislý soubor s pozdějším časovým razítkem než aktuální cíl Platné pouze v příkazech v pravidlech odvození.

Chcete-li zadat část předdefinovaného makra názvu souboru, připojte modifikátor makra a uzavřete upravené makro do závorek.

Modifikátor Výsledná část názvu souboru
D Adresář plus jednotky
B Základní název
F Základní název plus rozšíření
R Jednotka plus název základního názvu

Rekurzivní makra

Rekurzivní makra použijte k rekurzivnímu volání nástroje NMAKE. Rekurzivní relace dědí makra a informace příkazového řádku a Tools.ini proměnné prostředí. Nedědí pravidla odvozování definované souborem pravidel nebo .SUFFIXES.PRECIOUS specifikace. Existují tři způsoby předání maker do rekurzivní relace NMAKE:

  • Před rekurzivním voláním nastavte proměnnou SET prostředí pomocí příkazu.
  • Definujte makro v příkazu pro rekurzivní volání.
  • Nebo definujte makro v Tools.inisouboru .
Makro Definice
MAKE Příkaz použitý původně k vyvolání nástroje NMAKE.

Makro $(MAKE) poskytuje úplnou cestu k nmake.exe.
MAKEDIR Aktuální adresář při vyvolání nástroje NMAKE
MAKEFLAGS Aktuálně se možnosti projeví. Používá se jako /$(MAKEFLAGS). Tato /F možnost není zahrnutá.

Příkazová makra a makra možností

Makra příkazů jsou předdefinovaná pro produkty Microsoftu. Makra možností představují možnosti pro tyto produkty a nejsou ve výchozím nastavení definovány. Obě se používají v předdefinovaných pravidlech odvozování a lze je použít v blocích popisu nebo v pravidlech odvození definovaných uživatelem. Makra příkazů lze předefinovat tak, aby představovala část nebo celý příkazový řádek, včetně možností. Makra možností generují řetězec null, pokud není definován.

Nástroj Příkazové makro Definováno jako Makro Možnosti
Assembler maker AS ml nebo ml64 AFLAGS
Kompilátor jazyka C CC cl CFLAGS
Kompilátor C++ CPP cl CPPFLAGS
Kompilátor C++ CXX cl CXXFLAGS
kompilátor prostředků RC rc RFLAGS

Makra proměnné prostředí

NMAKE dědí definice maker pro proměnné prostředí, které existují před začátkem relace. Pokud byla proměnná nastavena v prostředí operačního systému, je k dispozici jako makro NMAKE. Zděděné názvy se převedou na velká písmena. Dědičnost nastane před předzpracováním. Pomocí možnosti /E můžete způsobit, že makra zděděná z proměnných prostředí přepíší všechna makra se stejným názvem v souboru pravidel.

Makra proměnných prostředí lze v relaci předefinovat a tím se změní odpovídající proměnná prostředí. Proměnné prostředí můžete také změnit pomocí příkazu SET. Změna proměnné prostředí v relaci pomocí příkazu SET ale nezmění odpovídající makro.

Příklad:

PATH=$(PATH);\nonesuch

all:
    echo %%PATH%%

V tomto příkladu změníte PATH odpovídající proměnnou PATHprostředí , připojí \nonesuch se k vaší cestě.

Pokud je proměnná prostředí definována jako řetězec, který by byl syntakticky nesprávný v souboru pravidel, není vytvořeno žádné makro a není generováno žádné upozornění. Pokud hodnota proměnné obsahuje znak dolaru ($), NMAKE ji interpretuje jako začátek vyvolání makra. Použití makra může způsobit neočekávané chování.

Viz také

Makra a příkaz NMAKE