trig.lib : sin.obj cos.obj arctan.obj !ilib trig.lib $?
この例では、マクロ $? は、ターゲット・ファイルと比較して日付の古いすべての従属ファイルの名前を表します。ILIB コマンドの前に感嘆符 (!) を使用すると、NMAKE はリスト内のファイルごとに ILIB コマンドを 1 回ずつ実行します。このように記述すると、ILIB コマンドの発行により、NMAKE はリスト内のファイルごとに ILIB コマンドを 1 回ずつ実行します。このように記述した結果、ILIB コマンドは 3 回まで実行され、実行のたびにモジュールを新しいバージョンに置き換えます。
DIR=c:\include $(DIR)\globals.inc : globals.inc copy globals.inc $@ $(DIR)\types.inc : types.inc copy types.inc $@ $(DIR)\macros.inc : macros.inc copy macros.inc $@
この例では、インクルード・ファイルのグループを更新する方法を示しています。 ディレクトリー c:¥include 内の globals.inc、types.inc、および macros.inc の各ファイルは、現行ディレクトリー内の対応するファイルに従属します。 インクルード・ファイルの 1 つの日付が古い場合、NMAKE はそれを現行ディレクトリーの同じ名前のファイルで置き換えます。
特殊マクロ $$@ を使用する次の記述ファイルは等価です。
DIR=c:\include $(DIR)\globals.inc $(DIR)\types.inc $(DIR)\macros.inc : $$(@F) !copy $? $@
特殊マクロ $$(@F) は、現行のターゲットのファイル名 (パスは含まない) を示します。
NMAKE は記述ブロックを評価するとき、3 つのターゲットを 1 度に 1 つずつ従属ファイルと比較して評価します。そのため、NMAKE はまず c:¥include¥globals.inc の日付が現行ディレクトリーの globals.inc と比較して古いかどうかをチェックします。日付が古い場合、従属ファイル globals.inc をターゲットへコピーするコマンドを実行します。NMAKE は、他の 2 つのターゲットについても、この手順を繰り返します。
コマンド行では、マクロ $? はこのターゲットの従属ファイルを参照します。マクロ $@ は、ターゲット・ファイルの完全なファイル指定です。