make 記述ファイルでのコマンドの使用

コマンドは、# (ポンド記号) または改行文字を除く文字の任意の文字列です。 コマンドで # を使用できるのは、引用符の中だけです。

コマンドは、従属行のセミコロンの後、または従属行のすぐ後に続くタブから始まる行のどちらかに現れることができます。

特定のターゲットに関するコマンド・シーケンスを定義するときは、 記述ファイル内でそれぞれのターゲットに 1 つずつコマンド・シーケンスを指定するか、 あるいは、一連の特殊な依存関係別々のコマンド・シーケンスを指定します。 両方を同時に指定することはできません。

ターゲット・ファイルを使用するたびに 1 つのコマンド・シーケンスを使用する場合、 従属行のターゲット名の後に、単一の : (コロン) を使用します。 次に例を示します。

test:        dependency list1...
         command list...
            .
            .
            .
test:        dependency list2...

親ファイルのセットと、ファイルを作成するためのコマンドのセットを使用して、ターゲット名 testを定義します。 ターゲット名 testは、別の依存関係リストを使用して記述ファイル内の他の場所に表示することができます。 ただし、その名前が記述ファイル内で別のコマンド・リストを持つことはできません。 test が変更に依存するいずれかのファイルの場合、 make コマンドは、その 1 つのコマンド・リスト内のコマンドを実行して、 testという名前のターゲット・ファイルを作成します。

個々のターゲット・ファイルを作成するためにコマンド・セットを複数指定したい場合は、 複数の従属定義を入力します。 それぞれの従属行には、ターゲット名があり、 その後に :: (2 つのコロン)、従属リスト、 そして make コマンドが従属リストの任意のファイルが変更された場合に使用するコマンド・リストを続ける必要があります。 次に例を示します。

test::      dependency list1...
         command list1...
test::      dependency list2...
         command list2...

ターゲット・ファイル test を作成するための 2 つの別個のプロセスを定義します。 以下のいずれかのファイルがあるとします。dependency list1変更、make コマンドの実行command list1. ファイルのいずれかがdependency list2変更、 make コマンドの実行command list2競合を避けるために, 親ファイルを両方に表示することはできません。dependency list1およびdependency list2.

注: make コマンドは、 各コマンド・ラインから新規シェルへとそれらのコマンドを渡します。 単一シェル・プロセスだけで意味を持つコマンド (例えば、 cd コマンドと shell コマンド) を使用するときは注意してください。 make コマンドは、 次の行にあるコマンドを実行する前に、これらの結果を破棄します。

コマンドをグループにまとめるために、 コマンド・ラインの終わりに ¥ (円記号) を使用します。 こうすると、make コマンドはそのコマンド・ラインを記述ファイルの次の行へ繰り越します。 シェルは、これらの行を両方とも 1 つの新規シェルに送ります。