这与Can a Makefile execute code ONLY when an error has occurred?略有不同。
我想要在发生错误时制定规则或特殊目标(独立于给定目标;不更改每个目标的规则,因为另一个答案似乎暗示了||运算符)。
在dmake中,特殊目标 .ERROR ,只要检测到错误情况,就会执行 。 GNU make有类似的东西吗?
(我还在使用GNU make 3.81,但我在新的GNU make 4.0的文档中找不到任何内容)
答案 0 :(得分:14)
Gnu并没有明确支持它,但是有几种方法可以破解任何东西。如果任何一个失败,则返回1。这意味着,如果第一个make失败,您可以在命令行上重新运行make with error rule:
make || make error_targ
当然,我假设您只是想在makefile本身中增加复杂性。如果是这种情况,您可以创建递归make文件:
all:
$(MAKE) normal_targ || $(MAKE) error_targ
normal_targ:
... normal make rules ...
error_targ:
... other make rules ...
这将导致makefile尝试构建normal_targ,如果失败,则会运行error_targ。这使得为缺乏经验的人阅读makefile变得有点困难,但它将所有逻辑放在一个地方。