我有这个:
.PHONY: check
check:
script-returning-nearly-always-zero
obj2.img: obj1.img check
make-obj2-from-obj1
所以,逻辑是我想重新生成obj2.img
,如果它比 obj1 更旧(或者它甚至不存在)。但是,如果“检查”目标失败,我想要一个错误。
现在我的问题是 的生成器obj2.img
总是运行。我想,可能是check
因为.PHONY
。
obj2.img
我可以以某种方式要求 make仅在obj1.img
更新时重新生成吗?
做到这一点的唯一方法是不具备
check
以下先决条件:相反,
check
显式调用作为 Make 目标:因此,如果
obj2.img
存在并且不早于obj1.img
,则不会对其进行重制;否则,首先将运行检查,如果成功,则make-obj2-from-obj1
.这还有一个附带的好处,即使检查失败,您也可以使用该
-k
选项强制重建。