プログラミングユーティリティ

接尾辞の規則を追加する

make には多数の便利な接尾辞の規則が提供されていますが、ユーザー定義の規則を追加することもできます。ただし、暗黙の規則を追加する場合は、パターンマッチングの規則が適しています (「パターンマッチングの規則: 接尾辞の規則の代替」を参照してください)。この節では、暗黙の規則をメークファイルに追加する従来の方法を説明しています。旧バージョンの make と互換性がある暗黙の規則を記述する必要がない場合をは、この節をとばして次の節に進んでも構いません。

接尾辞の規則は、2 段階の手順で行います。まず、ターゲットと依存関係の両方のファイルの接尾辞を、.SUFFIXES という特殊ターゲットの依存関係として指定し、接尾辞のリストに追加します。依存関係リストには指定した内容が蓄積されていくため、以下のようにこのターゲットのエントリを追加すると、リストに接尾辞が追加されます。

.SUFFIXES:  .ms .tr

次に、接尾辞の規則を指定するターゲットエントリを追加します。

ms.tr:
         troff -t -ms $< > $@

これらのエントリを記述したメークファイルを使用して、ms というマクロ (.ms ファイル) が含まれている文書ソースファイルを troff 出力ファイル (.tr ファイル) にフォーマットできます。

$ make doc.tr 
troff -t -ms doc.ms > doc.tr

接尾辞リストのエントリは、SUFFIXES マクロに指定されています。接尾辞をリストの最初に挿入するには、まず依存関係のない .SUFFIXES ターゲットエントリを指定して、その値を消去します。依存関係リストには蓄積されていきますが、この場合は例外的に値が上書きされます。以下のように依存関係および規則のないターゲットエントリを指定することによって、既存の定義を消去することができます。

.SUFFIXES

次に、以下のようにもう 1 つ別のエントリに新しい接尾辞、その後に SUFFIXES マクロへの参照を続けて記述して、接尾辞を追加することができます。

.SUFFIXES:
.SUFFIXES: .ms .tr $(SUFFIXES)