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

コマンドを表示せずに実行する

規則内のコマンド行の最初に @ を挿入すると、実行中にその行を表示しないようにできます。次に例を示します。

quiet: 
       	@echo you only see me once 

結果は、以下のようになります。

$ make quiet 
         you only see me once

make の実行時にコマンドを表示しないように指定する場合は、-s オプションを使用します。すべての実行でコマンド行の表示を禁止する場合は、.SILENT という特殊ターゲットをメークファイルに追加します。

.SILENT:
quiet:
         echo you only see me once

特殊な機能を持つターゲットは、名前の最初がドット (.) になっています。ドットで始まるターゲット名は、コマンド行の引数として明示的に指定した場合を除き、開始ターゲットとしては使用されません。コマンドがゼロ以外の終了コードを返した場合は、make は通常はエラーメッセージを出力して停止します。たとえば、次のようなターゲットがある場合を考えます。

rmxyz: 
     rm xyz 

この例で、xyz という名前のファイルがない場合は、makerm が終了ステータスを返した後に停止します。

$ ls xyz 
xyz not found
$ make rmxyz 
rm xyz
rm: xyz: No such file or directory
*** Error code 1
make: Fatal error: Command failed for target `rmxyz' 

注 -

-@ の両方を組み合わせて記述することも可能です。


コマンドの終了コードに関係なく処理を続行するには、タブの後に記述する最初の文字としてハイフン (-) を使用します。

rmxyz:
        -rm xyz

この例では、make が受け取った終了コードを示す警告メッセージが表示されます。

$ make rmxyz 
rm xyz 
rm: xyz: No such file or directory 
*** Error code 1 (ignored)

注 -

メークファイルをテストしている場合を除き、通常はゼロ以外のエラーコードをすべて無視することは避けてください。


-i オプションを使用すると、make がすべてのエラーコードを無視するように指定できます。ただし、通常はこのオプションは使用しないでください。また、.IGNORE という特殊ターゲットを記述すると、メークファイルの処理時に make が終了コードを無視するように指定できます。このオプションも、通常は使用しないでください。

ターゲットのリストを処理している際にゼロ以外のリターンコードが返されたときに、処理全体を停止するのではなく後に make が次のターゲットを続けて処理するように指定するには、-k オプションを使用します。