2021-06-12 Makefile の@(アットマーク), -(ハイフン)
Makefile に出てくる アットマーク(@)とハイフン(-)の意味について調べた。
通常実行
まずは下記のように、 Makefile に通常通りcmd1というコマンドを定義する。
cmd1:
echo 'hello world'
⚠インデントはスペースではなく Tab を使うことに注意
実行結果
実行するとコマンドの実行結果に加えて、実行したコマンド自身が出力される。
$ make cmd1
echo 'hello world'
hello world
つまりここでは、下記二つが出力されている。
echo 'hello world'というコマンド- 1 の出力結果である
hello world
@ アットマーク
@ を付けると、コマンド自身を標準出力しないという意味になる。
cmd2:
@echo 'hello world'
実行結果
実行すると実行したコマンドは出力されない。
つまりここでは echo 'hello world'は出力されず、その結果であるhello worldだけが出力される。
$ make cmd2
hello world
- ハイフン
- はエラーを無視するという意味だ。
cmd3:
invalid_command
echo 'invalid?'
cmd4:
-invalid_command
echo 'invalid?'
実行結果
-がないcmd3は、不正なコマンドが入っているときにエラーで終了する。
$ 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?