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 解釈します。 そのマクロを使用すると、予期しない動作が発生する可能性があります。

関連項目

マクロと NMAKE