linux

makeのオプション

操作を自動化するには、makeが便利です。
クリーンナップをする場合、あってもなくてもプロセスをkillするような操作をすることがあります。

例えば、aaaaとbbbbという2つのプロセスをkillする必要があるが、aaaaプロセスが既に終了しているというケースです。
この場合、下記のように書くとbbbbプロセスが動いていてもkillせず、bbbbプロセスが残ってしまいます。

$ cat Makefile
claen:
pkill -KILL aaaa
pkill -KILL bbbb
$ make
pkill -KILL aaaa
make: *** [claen] エラー 1
$ 

そこで、pkillのステータスを無視するように設定します。

$ cat Makefile
claen:
-pkill -KILL aaaa
-pkill -KILL bbbb
$ make
pkill -KILL aaaa
make: [claen] エラー 1 (無視されました)
pkill -KILL bbbb
make: [claen] エラー 1 (無視されました)
$ 

これで、想定の処理をするようになりましたが、この出力だと正常なのか異常なのかよくわかりません。
エラーの出力は、makeに-sオプションを付けるか、Makefileに.SILENTというターゲットを追加することで抑制できます。

$ cat Makefile
.SILENT:
claen:
-pkill -KILL aaaa
-pkill -KILL bbbb
$ make
$

これは、これで良いのですがやっぱり、何をしているか教えてほしいです。

$ cat Makefile
.SILENT:
claen:
echo cleanup process
echo kill aaaa
-pkill -KILL aaaa
echo kill bbbb
-pkill -KILL bbbb
$ make
cleanup process
kill aaaa
kill bbbb
$
タイトルとURLをコピーしました