我有中间文件,只有在它们成功生成时才想保留。
这是我目前的尝试:
all: foo.result
%.result: %.intermediate
cp $^ $@
%.input:
touch $@
%.intermediate: %.input
touch $@
$(if $(FAIL),exit 1)
.PRECIOUS: %.intermediate
.DELETE_ON_ERROR: %.intermediate
clean:
rm -f *.intermediate *.input *.result
为了让我痛苦地清楚我在追求什么,运行它并尝试没有输出:
(make clean && make foo.result) |&> /dev/null; if [[ ! -e foo.intermediate ]]; then echo "make removed precious intermediate file"; fi; (make clean && make foo.result FAIL=1) |&> /dev/null; if [[ -e foo.intermediate ]]; then echo "make did not remove corrupt file"; fi;