Makefile
内からデフォルトでコマンドのエコーを抑制することは可能ですか?
make
を--silent
モードで実行すると、すべてのコマンドの前に@
を付けるのと同じように動作します。
私は含めることができるコマンドまたはスタンザを探していますinside Makefileを使用して、@
ですべてを散らかしたり、ユーザーがすべてを手動で沈黙させたりする手間を省きます。
ターゲット.SILENT:
を定義すると、makeは何もエコーしません。通常は定義を保護するのが最善なので、簡単にオフにできます。
ifndef VERBOSE
.SILENT:
endif
現在、デフォルトではmakeは何も出力しませんが、make VERBOSE=1
を実行すると出力されます。
.SILENT
は廃止されたとマニュアルに記載されていますが、適切に保護されている場合、@
よりも一般的にはるかに優れています(より便利で柔軟性があります)。
.SILENT
ターゲットすべきではないがMakefile
の最初になるか、そうでなければmake
がデフォルトで使用します。
あなたは付け加えられます --silent
MAKEFLAGS
変数の先頭にあるMakefile
:
MAKEFLAGS += --silent
all:
echo foobar
.PHONY: all
そしてあなたは:
$ make
foobar
GNU Make's manual によると、特別なターゲット.SILENT
を使用できます。
マニュアルには次のように書かれていることに注意してください:
.SILENTは、「@」の方が柔軟であるため、基本的に廃止されました。
しかし、期待どおりに動作するようです。次のコードは、all
ターゲットをサイレントにします。
.SILENT:
hoge:
echo hoge
次の例では、hoge
ターゲットのみを無音にします。
.SILENT: hoge
hoge:
echo hoge
fuga:
echo fuga