NMAKE マクロを定義する
NMAKE マクロは、次の構文を使って定義します。
macro_name=string
macro_name は、大文字と小文字が区別される文字、数字、アンダースコア (_
) を最大 1,024 文字の長さで組み合わせて構成します。 macro_name には呼び出されるマクロを含めることができます。 macro_name 全体が呼び出されるマクロで構成されている場合、呼び出されるマクロを null または未定義にすることはできません。
string には、0 文字以上の任意のシーケンスを指定できます。 null 文字列には、0 文字、またはスペースかタブだけが含まれます。 string にはマクロの呼び出しを含めることができます。
マクロの特殊文字
定義の後の番号記号 (#
) は、コメントを指定します。 マクロでリテラルの番号記号を指定するには、^#
のようにキャレット (^
) を使ってエスケープします。
ドル記号 ($
) はマクロの呼び出しを指定します。 リテラルの $
を指定するには、$$
を使います。
1 つの定義を新しい行に拡張するには、行の末尾に円記号 (\
) を入力します。 そのマクロが呼び出されるときに、円記号とその後に続く改行文字はスペースに置き換えられます。 行の末尾にリテラルの円記号を指定するには、その前にキャレット (^
) エスケープを付けるか、その後にコメント指定子 (#
) を続けます。
リテラルの改行文字を指定するには、次の例のように、行の末尾にキャレット (^
) エスケープを入力します。
CMDS = cls^
dir
Null マクロと未定義マクロ
null マクロと未定義マクロはどちらも null 文字列に展開されますが、null 文字列として定義されたマクロは、前処理の式で定義されていると見なされます。 マクロを null 文字列として定義するには、コマンド ラインまたはコマンド ファイルで等号 (=
) の後にスペースまたはタブ以外の文字を指定しないようにして、null 文字列または定義を二重引用符 (" "
) で囲みます。 マクロの定義を解除するには、!UNDEF
を使います。 詳細については、「メイクファイルのプリプロセス ディレクティブ」を参照してください。
マクロを定義する場所
コマンド ライン、コマンド ファイル、メイクファイル、または Tools.ini
ファイルでマクロを定義します。
メイクファイルまたは Tools.ini
ファイルでは、各マクロ定義を別々の行に配置する必要があり、スペースやタブで始めることはできません。等号の周囲のスペースやタブは無視されます。 すべての string 文字はリテラルであり、周囲の引用符や埋め込みスペースも含まれます。
コマンド ラインまたはコマンド ファイルでは、スペースとタブで引数を区切り、等号を囲むことはできません。 string にスペースまたはタブが埋め込まれている場合は、string 自体かマクロ全体を二重引用符 (" "
) で囲みます。
マクロ定義の優先順位
マクロに複数の定義がある場合、NMAKE では最も優先順位の高い定義が使用されます。 優先順位の高い方から低い方へと並べると、次のようになります。
コマンド ラインで定義されたマクロ
メイクファイルまたはインクルード ファイルで定義されたマクロ
継承された環境変数マクロ
Tools.ini
ファイルで定義されたマクロ
環境変数から継承されたマクロで同じ名前のメイクファイルのマクロをオーバーライドするには、/E
を使います。 コマンド ラインをオーバーライドするには、!UNDEF
を使います。