Předběžné zpracování souboru pravidel

Relaci NMAKE můžete řídit pomocí direktiv a výrazů předběžného zpracování. Pokyny k předběžnému zpracování lze umístit do souboru pravidel nebo do Tools.inisouboru . Pomocí direktiv můžete podmíněně zpracovat soubor pravidel, zobrazit chybové zprávy, zahrnout další soubory pravidel, zrušit definici makra a zapnout nebo vypnout určité možnosti.

Direktivy předběžného zpracování souboru pravidel

Direktivy předběžného zpracování nerozlišují malá a velká písmena. Počáteční vykřičník (!) musí být uveden na začátku řádku. Za vykřičníkem pro odsazení se může zobrazit nula nebo více mezer nebo tabulátorů.

  • !CMDSWITCHES{ +option option- | } ...

    Zapne nebo vypne každou uvedenou možnost . Mezery nebo tabulátory musí být zobrazeny před operátorem nebo - operátorem+. Mezi operátorem a písmeny možností se nedají objevit žádné mezery. Písmena se nerozlišují malá a velká písmena a zadává se bez lomítka (/). Pokud chcete zapnout některé možnosti a vypnout jiné, použijte samostatné specifikace !CMDSWITCHES.

    Pouze /D, /I, /Na /S lze použít v souboru pravidel. V Tools.ini, všechny možnosti jsou povoleny kromě /F, /HELP, /NOLOGO, /X, a /?. Změny zadané v bloku popisu se neprojeví až do dalšího bloku popisu. Tato direktiva aktualizuje MAKEFLAGS; změny se dědí během rekurze, pokud MAKEFLAGS je zadána.

  • !ERRORtext

    Zobrazí text v chybě U1050 a pak zastaví NMAKE, i když /Kse použije modifikátor příkazu , /I, .IGNORE!CMDSWITCHESnebo modifikátor příkazu pomlčky (-). Mezery nebo tabulátory před ignorování textu

  • !MESSAGEtext

    Zobrazí text do standardního výstupu. Mezery nebo tabulátory před ignorování textu

  • !INCLUDE [ < ] název souboru [ > ]

    Načte název souboru jako soubor pravidel a pokračuje s aktuálním souborem pravidel. Nástroj NMAKE vyhledá název souboru jako první v zadaném nebo aktuálním adresáři a rekurzivně prostřednictvím adresářů všech nadřazených souborů pravidel. Pokud je název souboru uzavřený do úhlových závorek (< >), v adresářích určených INCLUDE makrem, který je původně nastaven na INCLUDE proměnnou prostředí. Užitečné pro předávání .SUFFIXES nastavení .PRECIOUSa odvozování pravidel pro rekurzivní soubory pravidel pravidel.

  • !IFconstant_expression

    Zpracovává příkazy mezi !IF a dalšími !ELSE nebo !ENDIF pokud se constant_expression vyhodnotí jako nenulová hodnota.

  • !IFDEFmacro_name

    Zpracovává příkazy mezi !IFDEF a dalšími !ELSE nebo !ENDIF pokud je definována macro_name . Makro s hodnotou null se považuje za definované.

  • !IFNDEFmacro_name

    Zpracovává příkazy mezi !IFNDEF a dalšími !ELSE nebo !ENDIF pokud není definována macro_name .

  • !ELSE[ IFconstant_expression macro_name | | IFDEFIFNDEFmacro_name ]

    Zpracovává příkazy mezi !ELSE a dalšími!ENDIF, pokud se předchozí !IFDEF!IF, nebo !IFNDEF příkaz vyhodnotí na nulu. Volitelná klíčová slova poskytují další kontrolu nad předzpracováním.

  • !ELSEIF

    Synonyma pro !ELSE IF.

  • !ELSEIFDEF

    Synonyma pro !ELSE IFDEF.

  • !ELSEIFNDEF

    Synonyma pro !ELSE IFNDEF.

  • !ENDIF

    Označí konec objektu !IF, !IFDEFnebo !IFNDEF bloku. Veškerý text za !ENDIF stejným řádkem se ignoruje.

  • !UNDEFmacro_name

    Nedefinuje macro_name.

Výrazy v předběžném zpracování souboru pravidel

Nebo !IF!ELSE IFconstant_expression se skládá z celočíselné konstanty (v desítkovém zápisu nebo zápisu jazyka C), řetězcových konstant nebo příkazů. K seskupení výrazů použijte závorky. Výrazy používají aritmetické aritmetické aritmetické čáry ve stylu jazyka C. čísla jsou v rozsahu -2147483648 do 2147483647 ve formě 32bitového dvou doplňku.

Výrazy můžou používat operátory, které fungují na konstantních hodnotách, ukončovací kódy z příkazů, řetězců, maker a cest k systému souborů.

Operátory předběžného zpracování souboru pravidel

Výrazy předběžného zpracování souboru pravidel mohou používat operátory, které fungují na konstantních hodnotách, ukončovací kódy z příkazů, řetězců, maker a cest systému souborů. Pokud chcete výraz vyhodnotit, preprocesor nejprve rozbalí makra a potom spustí příkazy a pak provede operace. Vyhodnocuje operace v pořadí explicitního seskupení v závorkách a potom v pořadí podle priority operátoru. Výsledkem je konstantní hodnota.

Operátor DEFINED je logický operátor, který funguje s názvem makra. Výraz DEFINED( macro_name ) je pravdivý, pokud je definován macro_name , i když nemá přiřazenou hodnotu. DEFINED v kombinaci s !IF nebo !ELSE IF je ekvivalentní nebo !IFDEF!ELSE IFDEF. Na rozdíl od těchto direktiv DEFINED však lze použít ve složitých výrazech.

Operátor EXIST je logický operátor, který funguje na cestě systému souborů. EXIST( path ) je true, pokud cesta existuje. Výsledek EXIST lze použít v binárních výrazech. Pokud cesta obsahuje mezery, uzavřete ji do uvozovek.

K porovnání dvou řetězců použijte operátor rovnosti (==) nebo operátor nerovnosti (!=). Uzavřete řetězce do dvojitých uvozovek.

Celočíselné konstanty mohou používat unární operátory pro číselnou negaci (-), doplněk jednoho (~) a logickou negaci (!).

Výrazy můžou používat následující operátory. Operátory se stejnou prioritou jsou seskupené a skupiny jsou uvedeny v sestupném pořadí priorit. Unární operátory přidružují operand napravo. Binární operátory se stejnými prioritami přidružují operandy zleva doprava.

Operátor Popis
DEFINED(macro_name) Vytvoří logickou hodnotu pro aktuální stav definice macro_name.
EXIST(path) Vytvoří logickou hodnotu pro existenci souboru v cestě.
! Unární logická NE.
~ Unární doplněk.
- Unární negace.
* Násobení.
/ Divize.
% Moduls (zbytek).
+ Kromě toho.
- Odčítání.
<< Bitový posun doleva.
>> Bitový posun doprava.
<= Menší než nebo rovno.
>= Větší než nebo rovno.
< Menší než.
> Větší než.
== Rovnosti.
!= Nerovnost.
& Bitový operátor AND.
^ Bitový XOR.
| Bitový operátor OR.
&& Logický operátor AND.
|| Logický operátor OR.

Poznámka

Bitový operátor XOR (^) je stejný jako řídicí znak a musí být uchycený (jako ^^) při použití ve výrazu.

Provádění programu při předběžném zpracování

Pokud chcete při předběžném zpracování použít ukončovací kód příkazu, zadejte příkaz s libovolnými argumenty v hranatých závorkách ([ ]). Před spuštěním příkazu se rozbalí všechna makra. NMAKE nahradí specifikaci příkazu ukončovacím kódem příkazu, který lze použít ve výrazu k řízení předběžného zpracování.

Příklad

!IF [my_command.exe arg1 arg2] != 0
!MESSAGE my_command.exe failed!
!ENDIF

Viz také

NMAKE – referenční zdroje