2018年03月14日(水) [長年日記]
■ [howto][dev] GNU Makeでエラー時に成果物を削除する
makeはコマンドが失敗してもターゲットファイルを削除しない。
$ cat Makefile out: $(COMMAND) > $@ $ COMMAND=gagaga make gagaga > out /bin/sh: 1: gagaga: not found Makefile:2: ターゲット 'out' のレシピで失敗しました make: *** [out] エラー 127 $ ls -l out -rw-rw-rw- 1 kenichi kenichi 0 3月 14 15:52 out
GNU Makeなら、.DELETE_ON_ERROR というターゲットを作っておくとエラー時にターゲットファイルを削除してくれるみたい。
$ cat Makefile .DELETE_ON_ERROR: out: $(COMMAND) > $@ $ \rm out $ COMMAND=gagaga make gagaga > out /bin/sh: 1: gagaga: not found Makefile:4: ターゲット 'out' のレシピで失敗しました make: *** [out] エラー 127 make: *** ファイル 'out' を削除します $ ls -l out ls: 'out' にアクセスできません: そのようなファイルやディレクトリはありません