Makefile の "-@" (ハイフン、アット) ってなんですか?

 

f:id:quwahara:20120213201354j:plain



Makefile を直そうと思い眺めていたら、コマンド行の行頭が "-@" で始まる行があった
この "-@"  って何だ?と思って Google 先生に聞いてみたが
いかんせん検索文字列が記号になってしまうのでうまくひっかからない

仕方がないのでよくよく GNU`make' の文書を読んでみると
"-" と "@" はそれぞれ別な命令だということが分かった
あーーー恥ずかしい
"-" はその行のコマンドが失敗しても次の行に実行が移る
 "@" はコマンド行をエコーしない
の意味だった

コマンド内エラー
http://www.ecoop.net/coop/translated/GNUMake3.77/make_5.jp.html#SEC47 
 

5.5 Errors in Recipes
http://www.gnu.org/software/make/manual/make.html#index-g_t_0040code_007b_002d_007d-_0028in-recipes_0029-356  

簡単な実例 

[mitsuaki@localhost make_test]$ cat Makefile 
hoge:
        echo fuga
        dame                      (コメント: ←先頭に"-"なしで、失敗するコマンド)
        echo piyo

chin:
        echo ton
        -dame                     (コメント: ←先頭に"-"ありで、失敗するコマンド)
        echo shan
[mitsuaki@localhost make_test]$ make hoge
echo fuga
fuga
dame
make: dame: コマンドが見つかりませんでした
make: *** [hoge] エラー 127       (コメント:エラーになって echo piyo が実行されていない)
[mitsuaki@localhost make_test]$ make chin
echo ton
ton
dame
make: dame: コマンドが見つかりませんでした
make: [chin] エラー 127 (無視されました)
echo shan                          (コメント:エラーになっても echo shan が実行さる)
shan
[mitsuaki@localhost make_test]$