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

実行可能なコマンド

ターゲットを作成する必要がある場合は、一連のコマンドを実行します。通常は、各コマンド行が表示され、マクロ置換の後に、コマンドごとに別々のシェル呼び出しに渡されます。サイレントモード (make コマンドの -s オプション) の場合、または記述ファイル中のコマンド行が @ 記号で始まる場合には、コマンドは表示されません。コマンドがゼロ以外のエラーコードを返してエラーを示している場合は、通常 make は停止します。make コマンドで -i フラグが指定されているか、.IGNORE というターゲット名が記述ファイルに記述されているか、記述ファイル中のコマンド文字列がハイフン (-) で始まる場合には、エラーは無視されます。プログラムが無意味な状態を返すことがわかっている場合は、そのプログラムを呼び出す行の前にハイフンを付けるのが適しています。各コマンド行は、コマンドごとに呼び出されたシェルに渡されるため、 1 つのシェルプロセスでのみ有効なコマンド (cd および shell の制御コマンドなど) を使用する場合は注意してください。これらのコマンドの結果は、次の行が実行される前に削除されます。

コマンドを実行する前に、内部的に管理されているマクロが設定されます。$@ マクロは、現在のターゲットの完全なターゲット名に設定されます。$@ マクロは、明示的に名前が指定された依存関係に対してのみ評価されます。$? マクロは、ターゲットよりも新しい名前の文字列に設定されます。$? マクロは、メークファイルに記述されている明示的な規則の評価時に評価されます。コマンドが暗黙の規則により生成された場合は、$< マクロはその動作を発生させた関連ファイルの名前になります。$* マクロは、現在のファイルと依存ファイルの名前に共通する接頭辞です。ファイルを作成する際に、明示的に指定されたコマンドや関連する組み込み規則がない場合は、.DEFAULT という名前に対応するコマンドが実行されます。.DEFAULT という名前がない場合は、make はメッセージを表示して停止します。

また、記述ファイルでも、関連するマクロ ($(@D)$(@F)$(*D)$(*F)$(<D)$(<F)) を使用できます。