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?