这是我的 Makefile 中的两个目标。
.SECONDARY:
exp-%.ans:
echo $* > eval/$@
%.scores: %.ans
cat eval/$< > eval/$@
当我写make -n exp-40.scores
输出将是:
echo 40 > eval/exp-40.ans
cat eval/exp-40.ans > eval/exp-40.scores
这很好,除了一件事。它不知道依赖关系已经持有。如果我创建 eval/exp-40.scores (第一次),那么我希望如果我运行相同的命令,make 会说它已经存在。所以我尝试像这样更改我的 Makefile:
.SECONDARY:
exp-%.ans:
echo $* > eval/$@
%.scores: eval/%.ans
cat eval/$< > $@
当我再次写入make -n exp-40.scores
时,输出将是:
echo eval/40 > eval/eval/exp-40.ans
cat eval/eval/exp-40.ans > exp-40.scores
这是完全错误的,因为我的参数应该是 40 而不是 eval/40。
我怎样才能实现这两个世界中最好的呢?即,我想在 eval/ 文件夹中创建 *.scores。我还想检查文件是否已经存在。然后 make 应该根据该文件的存在进行。
谢谢。