推論規則は、コマンドが与えられない場合に記述ブロックをどのように処理するかを NMAKE が推論するためのテンプレートです。 .SUFFIXES リストで定義されている拡張子のみに対して、推論規則を使用することができます。 拡張子 .c、.obj、.asm、および .exe は、自動的に .SUFFIXES に組み込まれます。
.SUFFIXES 疑似ターゲットを使用して手動で PL/I ファイル拡張子を追加する必要があります。 .SUFFIXES 疑似ターゲットを参照してください。
NMAKE が、コマンドを含まない記述ブロックを検出した場合、2 つのファイル拡張子を与えて、従属ファイルからターゲットを作成する方法を指定する推論規則を探します。同様に、従属ファイルが存在しない場合は、NMAKE は同じベース名を持つ別のファイルから従属ファイルを作成する方法を指定する推論規則を探します。
NMAKE は、作成しようとするファイルのベース名が、既に存在するファイルのベース名と一致する場合のみ、推論規則を適用します。
実際、推論規則は、従属ファイルを表す拡張子を持つファイルと、ターゲット・ファイルを表す拡張子を持つファイルの間に 1 対 1 対応がある場合のみに有用です。例えば、ライブラリーに複数のモジュールを挿入する推論規則を定義することはできません。
推論規則を使用することにより、いくつかの記述ブロックに同じコマンドを記述する必要がなくなります。例えば、推論規則を使用して、pli コマンドを 1 つだけ指定し、そのコマンドがすべての PL/I ソース・ファイル (.pli 拡張子を持つ) をオブジェクト・ファイル (.obj 拡張子を持つ) に変えるようにすることができます。
次の書式のテキストを記述ファイルまたは TOOLS.INI に追加することによって、推論規則を定義します。『特殊機構』を参照してください。
.fromext.toext: commands :
推論規則のエレメントは以下のとおりです。
例えば、PL/I ソース・ファイル (.pli 拡張子を持つ) を PL/I オブジェクト・ファイル (obj 拡張子を持つ) に変換する推論規則は、次のようになります。
.pli.obj: pli $<
特殊マクロ $< は、ターゲットと比較して日付の古い従属ファイルの名前を表します。