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