NMAKE の特殊マクロ
NMAKE には、さまざまなファイル名とコマンドを表す特殊なマクロがいくつか用意されています。 これらのマクロのいくつかは、定義済みの推論規則に含まれています。 すべてのマクロと同様に、NMAKE によって提供されるマクロでは大文字と小文字が区別されます。
ファイル名マクロ
ファイル名マクロは、依存関係内で指定されたファイル名として事前定義されています (ディスク上での完全なファイル名の指定ではありません)。 これらのマクロは、呼び出し時にかっこ内に配置する必要はありません。次に示すように、$
だけを指定します。
マクロ | 意味 |
---|---|
$@ |
現在指定されている、現在のターゲットの完全名 (パス、ベース名、拡張子)。 |
$$@ |
現在指定されている、現在のターゲットの完全名 (パス、ベース名、拡張子)。 依存関係内の依存としてのみ有効です。 |
$* |
現在のターゲットのパスとベース名からファイル拡張子を除いたもの。 |
$** |
現在のターゲットのすべての依存。 |
$? |
現在のターゲットより後のタイムスタンプを持つすべての依存。 |
$< |
現在のターゲットより後のタイムスタンプを持つ依存ファイル。 推論規則のコマンドでのみ有効です。 |
定義済みのファイル名マクロの一部を指定するには、マクロ修飾子を追加し、変更されたマクロをかっこで囲みます。
修飾子 | 結果のファイル名の一部 |
---|---|
D |
ドライブとディレクトリ |
B |
ベース名 |
F |
ベース名と拡張子 |
R |
ドライブとディレクトリとベース名 |
再帰マクロ
再帰マクロを使用すると、NMAKE を再帰的に呼び出すことができます。 再帰セッションでは、コマンドライン マクロと環境変数マクロ、および Tools.ini
の情報が継承されます。 メイクファイルによって定義された推論規則や、.SUFFIXES
および .PRECIOUS
の指定は継承されません。 再帰的な NMAKE セッションにマクロを渡すには、次の 3 つの方法があります。
- 再帰呼び出しの前に、
SET
コマンドを使用して環境変数を設定します。 - 再帰呼び出し用のコマンドでマクロを定義します。
- または、
Tools.ini
でマクロを定義します。
マクロ | Definition |
---|---|
MAKE |
最初に NMAKE を呼び出すために使用されるコマンド。$(MAKE) マクロは、nmake.exe への完全なパスを提供します。 |
MAKEDIR |
NMAKE が呼び出されたときの現在のディレクトリ。 |
MAKEFLAGS |
現在有効なオプション。 /$(MAKEFLAGS) のように使用します。 /F オプションは含まれません。 |
コマンド マクロとオプション マクロ
コマンド マクロは、Microsoft 製品用に事前定義されています。 オプション マクロは、これらの製品に対するオプションを表すもので、既定では定義されていません。 どちらも定義済みの推論規則で使用され、記述ブロックまたはユーザー定義の推論規則で使用できます。 コマンド マクロを再定義して、コマンド ラインの一部または全部 (オプションを含む) を表すこともできます。 オプション マクロが未定義の場合は、null 文字列が生成されます。
ツール | コマンド マクロ | 何として定義されるか | オプション マクロ |
---|---|---|---|
マクロ アセンブラー | AS |
ml または ml64 |
AFLAGS |
C コンパイラ | CC |
cl |
CFLAGS |
C++ コンパイラ | CPP |
cl |
CPPFLAGS |
C++ コンパイラ | CXX |
cl |
CXXFLAGS |
リソース コンパイラ | RC |
rc |
RFLAGS |
環境変数マクロ
NMAKE では、セッションの開始より前に存在している環境変数を対象に、マクロ定義が継承されます。 変数がオペレーティング システム環境で設定されている場合、その変数は NMAKE マクロとして使用できます。 継承された名前は大文字に変換されます。 継承は、前処理の前に発生します。 環境変数から継承されたマクロで、メイクファイル内の同じ名前のマクロをオーバーライドするには、/E オプションを使います。
環境変数マクロは、セッションで再定義することもできます。その場合は、対応する環境変数が変更されます。 また、SET コマンドを使用して環境変数を変更することもできます。 ただし、SET コマンドを使用してセッション内の環境変数を変更しても、対応するマクロは変更されません。
次に例を示します。
PATH=$(PATH);\nonesuch
all:
echo %%PATH%%
この例では、PATH
を変更することで、対応する環境変数 PATH
が変更され、パスに \nonesuch
が追加されます。
環境変数が、メイクファイル内で誤った構文になる文字列として定義されている場合、マクロは作成されず、警告も生成されません。 変数の値にドル記号 ($) が含まれている場合、NMAKE はそれをマクロ呼び出しの開始として解釈します。 そのマクロを使用すると、予期しない動作が発生する可能性があります。