きしもとと申します
make で生成物を管理していて、
(Makefileの例)
bar : foo
gen_bar foo
foo : foo_src.txt
gen_foo foo_src.txt > foo
のようにリダイレクトでターゲットファイルを生成している場合など、
コマンドの実行がエラーになっても、ターゲットファイルが作られて
しまい、make を再実行すると、この例の場合だと 正しく作られて
いない foo から bar を生成しようとしてしまいます。
GNU make には、コマンドが異常終了した場合や、さらに .DELETE_ON_ERROR
というターゲットがあれば、終了ステータスが 0 でなければ、中途半端に
作られた(であろう)ターゲットファイルを削除してくれる、という
機能があります。
FreeBSD の make( /usr/bin/make の make )では、^C で中断された場合
には、ターゲットファイルを削除してくれるのですが、他の正常終了で
ない場合に、削除させる方法は無いのでしょうか?
# 調べていたところ "What is BSD make?" というスレッドを見つけました
# http://mail-index.netbsd.org/netbsd-users/2008/10/thread2.html#002183
# これによると NetBSD の make は FreeBSD の make とだいぶ違うとの
# ことですがこの質問は一応 FreeBSD の make についてということで
# お願いします。