推論規則は、ある拡張子を持ったファイルから、別の拡張子を持ったファイルを作る時の方法を定義したファイルです。MAKEは、この推論規則にしたがって、ターゲットを更新するためのコマンドを用意し、ターゲットの依存関係を推論します。この推論規則を用いることにより、MAKEファイルの記述が簡略化できます。推論規則は、MAKEファイルまたはメイクルールファイル“MAKERULE.DEF”に記述します。
各記述ブロックの依存ファイルについて、その依存ファイルをターゲットとする記述ブロックがあるか調べ、ない場合には推論します。推論の条件は、次のようになります。
これらの条件が満足できた場合、MAKEは次のように記述ブロックを追加します。
メイクルールファイル“MAKERULE.DEF”は、MAKEが生成規則を推論するための規則を記述したもので、次の形式で表します。
.sss.ttt: commands
1行目で2つのファイルの拡張子を指定します。“sss”は、依存ファイルの拡張子を、“ttt”は、ターゲットファイルの拡張子を指定します。拡張子には、大文字と小文字の区別がありません。“.sss”のピリオド(.)は、行の先頭でなければなりません。続く行は、コマンドブロックであり、記述内容はMAKEファイルと同じです。つまり、アセンブラソース“basename.asm”からオブジェクトファイル“basename.obj”を生成するための規則は“.asm.obj”となります。
# ***************************************************************** # *** *** # *** internal generate rule for EVA86000 utility make. *** # *** definition for M86K *** # *** *** # ***************************************************************** ASM = m86k .ASM.OBJ: $ (ASM) $*; .TARGET: .EVA .HEX ← デフォルト最終ターゲットの指定 .DEFAULT: @echo -------------------------------- @echo ??? Undefined build commands ??? @echo -------------------------------- # end of makerule.def