1

GNU make が壊れていると思い始めています。その行動は予測不可能になっているようです。私はそれで賞金を獲得できますか?

私のコマンド セクションでは、「@」文字を使用して不要な出力を抑制しています。1 つのメイクファイルで、1 回の実行で「@」を削除して、意図したとおりに実行されていることを確認しました。「@」を元に戻したので、シェル エラーが発生します:
@mkdir: not found

一体何のことですか? 「@」が標準のコマンド修飾子として認識されなくなる原因は何ですか?

グル!あのぽっと嫌い!(Managing projects with GNU make の表紙より)

4

1 に答える 1

0

この@文字は、make によって実行される行の先頭でのみ有効です。前の行の終了などの継続文字がある場合\ 、これは make では実行されず、シェルによって実行されます。@シェルは記号をどうするか分からないため、エラーになります。

さらに、使用する場合.ONESHELL、コマンド プレフィックスはレシピの最初の行でのみ有効であることに注意してください。その後、すべての行が実行のために 1 つのシェルに渡されるため、エラーがスローされます。

他の前置演算子 ( -) にも同じ規則が適用されます。

于 2016-12-30T12:51:18.593 に答える