发生错误时,GNU可以执行规则吗?

时间:2014-01-14 16:01:21

标签: error-handling makefile gnu-make dmake

这与Can a Makefile execute code ONLY when an error has occurred?略有不同。

我想要在发生错误时制定规则或特殊目标(独立于给定目标;不更改每个目标的规则,因为另一个答案似乎暗示了||运算符)。

dmake中,特殊目标 .ERROR ,只要检测到错误情况,就会执行 。 GNU make有类似的东西吗?

(我还在使用GNU make 3.81,但我在新的GNU make 4.0的文档中找不到任何内容)

1 个答案:

答案 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变得有点困难,但它将所有逻辑放在一个地方。