Make のレシピ行のプレフィックスとして @、-、+ はどのような働きをしますか? 質問する

Make のレシピ行のプレフィックスとして @、-、+ はどのような働きをしますか? 質問する

GNU Makefile マニュアルには、これらのプレフィックスについて記載されています。

.ONESHELL が指定されている場合は、レシピの最初の行のみで特殊なプレフィックス文字 ('@'、'-'、および '+') がチェックされます。

これらの接頭辞は何をするのでしょうか、またどこで言及されているのでしょうか?

ベストアンサー1

これらは、タグ付けされたコマンドラインに対する make の動作を制御します。

  • @実行されたコマンドの通常の「エコー」を抑制します。

  • -実行されたコマンドの終了ステータスを無視することを意味します (通常、終了ステータスがゼロ以外の場合、ビルドのその部分は停止します)。

  • +は、コマンドが正常に実行されない場合に、このコマンドをmake -n'(または 'make -t' または 'make -q') で実行することを意味します。 の POSIX 仕様と、 GNU Make マニュアルの§9.3makeも参照してください。

この表記法は、またはを含むコマンドラインが の下で実行されるという事実上の(+標準化)メカニズムの(POSIX 標準化された)一般化です。${MAKE}$(MAKE)make -n

(はGNU Make マニュアルの§5.2@で説明されており、 は§5.5で説明されており、§5.7.1では の使用について言及されています。)-+

おすすめ記事