はむはむエンジニアぶろぐ

365日エンジニアリング

Makefileで、例外処理を行う

f:id:secret_hamuhamu:20150423012732j:plain
Makefileで、ある一連の処理が失敗した時にリカバリ処理などの例外処理を行いたい。
シェルスクリプト|| を使えば行うことが出来る。

ソースコード

run:
  $(MAKE) exec || $(MAKE) error
exec:
  cat hoge.txt
error:
  echo NG

このMakefileを実行しよう。

$ make run

hoge.txtが、存在すればcatを実行し、存在しなければNGを出力する。

解説

||シェルスクリプト演算子で、 例えばこんなコード command1 || command2 だとcommand1を実行する。
ただし、失敗した時はcommand2を実行するというものである。

先ほどのMakefileに戻る。
ターゲット run は、 ターゲット exec を呼び出し終了ステータスが、1なら失敗なので ターゲット error を呼び出す。
exec の終了ステータスが、0なら成功なので error を呼び出さない。
ということになる。

最近読んだ本

GNU Make 第3版

GNU Make 第3版