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

暗黙の規則の基本的な用途

ターゲットに規則が指定されていない場合は、make暗黙の規則を使用してターゲットを構築します。ターゲットが属するファイルのクラスに対する規則が make によって検出された場合は、暗黙の規則のターゲットエントリで定義されている規則が適用されます。

make は、ユーザーが指定したメークファイルの他に、デフォルトのメークファイル (/usr/share/lib/make/make.rules) も読み取ります。このデフォルトのメークファイルには、多数の暗黙の規則のためのターゲットエントリなどの情報が記述されています。


注 -

System V make では、暗黙の規則は make プログラム中に定義 (ハードコード) されています。


暗黙の規則には、接尾辞の規則パターンマッチングの規則の 2 種類があります。接尾辞の規則は、ある接尾辞を持つファイルを、ベース名は同じで接尾辞が異なる別のファイルから構築するためのコマンドを指定します。パターンマッチングの規則は、ワイルドカードのパターンに一致するターゲットおよび依存関係に基づいて規則を選択します。デフォルトの暗黙の規則は、接尾辞の規則です。

接尾辞の規則を使用すると、メークファイルを記述する必要がなくなる場合があります。たとえば、以下のように make コマンドを実行して、functions.c という 1 つの C ソースファイルから functions.o という名前のオブジェクトファイルを構築することができます。

$ make functions.o
cc -c functions.c -o functions.o 

makeは、nonesuch.c というソースファイルから nonesuch.o というオブジェクトファイルを構築する場合でも同様に機能します。

functions.c から functions という名前の (接尾辞なし) 実行可能ファイルを構築するには、以下のように make コマンドを実行します。

$ make functions
cc -o functions functions.c

.c ファイルから .o という接尾辞のファイルを構築する際の規則を、.c.o 接尾辞の規則と呼びます。.c ファイルから実行可能プログラムを構築する際の規則を、.c 規則と呼びます。デフォルトの接尾辞のすべての規則は表 4-8 を参照してください。