Makefile に出てくる アットマーク(@)とハイフン(-)の意味について調べた。

通常実行

まずは下記のように、 Makefile に通常通りcmd1というコマンドを定義する。

cmd1:
	echo 'hello world'

⚠インデントはスペースではなく Tab を使うことに注意

実行結果

実行するとコマンドの実行結果に加えて実行したコマンドが出力される。

$ make cmd1
echo 'hello world'
hello world

@ アットマーク

@ を付けると、コマンド自身を標準出力しないという意味になる。

cmd2:
	@echo 'hello world'

実行結果

実行すると実行したコマンド(ここでは echo 'hello world')は出力されない。

$ make cmd2
hello world

- ハイフン

- はエラーを無視するという意味。

cmd3:
	invalid_command
	echo 'invalid?'
cmd4:
	-invalid_command
	echo 'invalid?'

実行結果

不正なコマンドが入っているときにエラーで終了する。

$ make cmd3
invalid_command
make: invalid_command: No such file or directory
make: *** [cmd3] Error 1

-を付けると不正なコマンドであっても無視することができる。

$ make cmd4
invalid_command
make: invalid_command: No such file or directory
make: [cmd4] Error 1 (ignored)
echo 'invalid?'
invalid?

参考資料

Makefile の “-@” (ハイフン、アット) ってなんですか? - quwaharaの日記