Definování makra NMAKE
Makro NMAKE je definováno pomocí této syntaxe:
macro_name=string
Macro_name je kombinace písmen, číslic a podtržítka (_
) o délce až 1 024 znaků. Macro_name může obsahovat vyvolané makro. Pokud se macro_name skládá výhradně z vyvolaného makra, nemůže být vyvoláno makro null ani nedefinováno.
Řetězec může být libovolná posloupnost nula nebo více znaků. Řetězec null obsahuje nula znaků nebo pouze mezery nebo tabulátory. Řetězec může obsahovat vyvolání makra.
Speciální znaky v makrech
Znak čísla (#
) za definicí určuje komentář. Pokud chcete zadat znak literálového čísla v makrech, použijte stříšku (^
) k jeho řídicímu znaku, jako v ^#
.
Znak dolaru ($
) určuje vyvolání makra. Chcete-li zadat literál $
, použijte $$
.
Pokud chcete rozšířit definici na nový řádek, ukončete řádek zpětným lomítkem (\
). Při vyvolání makra se zpětné lomítko a následující znak nového řádku nahradí mezerou. Pokud chcete zadat zpětné lomítko literálu na konci řádku, před něj použijte řídicí stříšku (^
) nebo ho použijte specifikátor komentáře (#
).
Pokud chcete zadat literálový znak nového řádku, ukončete řádek stříškou (^
) řídicím znakem, jak je znázorněno v tomto příkladu:
CMDS = cls^
dir
Hodnota Null a nedefinovaná makra
Makra s hodnotou null i nedefinovaná se rozšiřují na řetězce null, ale makro definované jako řetězec null se považuje za definované ve výrazech předběžného zpracování. Chcete-li definovat makro jako řetězec s hodnotou null, zadejte žádné znaky kromě mezer nebo tabulátorů za znaménkem rovná se (=
) v příkazovém řádku nebo souboru příkazu a uzavřete řetězec null nebo definici do dvojitých uvozovek (" "
). Chcete-li zrušit definici makra, použijte !UNDEF
. Další informace naleznete v tématu Direktivy předběžného zpracování souboru pravidel.
Místo definice maker
Definujte makra v příkazovém řádku, příkazovém souboru, souboru makefile nebo Tools.ini
souboru.
V souboru pravidel nebo souboru Tools.ini
musí být každá definice makra zobrazena na samostatném řádku a nesmí začínat mezerou nebo tabulátorem. Mezery nebo tabulátory kolem symbolu rovná se ignorují. Všechny znaky řetězce jsou literál, včetně okolních uvozovek a vložených mezer.
V příkazovém řádku nebo příkazovém souboru jsou argumenty mezerami a tabulátory oddělené a nemůžou znaménko rovná se ohraničovat. Pokud řetězec obsahuje vložené mezery nebo tabulátory, uzavřete buď samotný řetězec, nebo celé makro do uvozovek (" "
).
Priority v definicích maker
Pokud má makro více definic, NMAKE použije definici s nejvyšší prioritou. Následující seznam zobrazuje pořadí priorit od nejvyšších po nejnižší:
Makro definované na příkazovém řádku
Makro definované v souboru pravidel nebo v souboru zahrnutí
Zděděné makro proměnné prostředí
Makro definované v
Tools.ini
souboru
Slouží /E
k tomu, aby makra zděděná z proměnných prostředí přepsala makra souboru pravidel se stejným názvem. Slouží !UNDEF
k přepsání příkazového řádku.