GNU Makefileマニュアルでは、 mentions これらのプレフィックス。
.ONESHELLが指定されている場合、レシピの最初の行のみが特別なプレフィックス文字(「@」、「-」、および「+」)についてチェックされます。
これらのプレフィックスは何をするもので、どこに記載されていますか?
タグ付きコマンドラインのmakeの動作を制御します。
@
は、実行されるコマンドの通常の「エコー」を抑制します。
-
は、実行されるコマンドの終了ステータスを無視することを意味します(通常、ゼロ以外の終了ステータスはビルドのその部分を停止します)。
+
は、コマンドが正常に実行されないときに「make -n
の下でこのコマンドを実行」(または「make -t」または「make -q」)を意味します。 --GNU Makeマニュアルの make
および §9. のPOSIX仕様も参照してください。
+
表記は、de facto(非標準化)メカニズムの(POSIX標準化)一般化であり、${MAKE}
または$(MAKE)
はmake -n
の下で実行されます。
(@
はGNU Makeマニュアルの §5.2 で説明されています; -
は §5.5 で説明されています- §5.7.1 は+
の使用に言及しています。)
@
は、コマンドラインがコンソールにエコーアウトするのを防ぎます。 -s
または--keep-silent
を使用してグローバルに実行できます
-
は、何らかの理由でコマンドが失敗した場合でも、makeを続行するように指示します。 -i
フラグ(または--ignore-errors
)を使用してグローバルに実行できます。
+
あなたが尋ねる前に私は馴染みがありませんでした。私が知る限りでは、-n
、-t
、および-q
の効果を無効にします。これらはすべて、基本的にmakeに実際にコマンドを実行しないように指示します。そのため、先頭に+
が付いた行が実行されます。
公式のGnu Makeマニュアルを読むと、それらはすべて Chapter 5 で言及されています。私の古いマニュアルのコピーでは、「コマンド」に関する章でしたが、用語「du jour」は「レシピ」のようです。