Makeのレシピ行のプレフィックスとして@、-、+は何をしますか?


172

GNU Makefileマニュアルでは、これらの接頭辞について言及しています

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

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

回答:


234

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

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

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

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

+表記は、(POSIX標準化)一般化である事実上の コマンドラインを含むことにより(非標準)機構${MAKE}又は$(MAKE)下に実行されますmake -n

@に記載されている5.2、GNUのマニュアル作る-に記載されて§5.5 ;及び§5.7.1の使用に言及+)。


41

@コマンドラインがコンソールにエコー出力されないようにします。-sまたはでグローバルに行うことができます--keep-silent

-何らかの理由でコマンドが失敗した場合でも、makeに続行を指示します。-iフラグ(または--ignore-errors)を使用してグローバルに実行できます。

+あなたが尋ねる前は、私は慣れていませんでした。私が知る限り、それはの効果を打ち消し-n-t-q基本的には、実際にコマンドを実行しないようにメイクを教えてすべてが、。したがって、+前にaがある行はとにかく実行されます。

公式のGnu Makeマニュアルを読んだ場合、それらはすべて第5章で説明されています。「コマンド」の章であった私のマニュアルの古いコピーでは、用語du jourは「レシピ」のようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.