这与Make a Makefile仅在发生错误时执行代码略有不同?.
我想要在发生错误时制定规则或特殊目标(独立于给定目标;不更改每个目标的规则,因为另一个答案似乎暗示了||运算符).
在dmake的有特殊目标 .ERROR即每当检测到错误条件时执行.GNU make有类似的东西吗?
(我还在使用GNU make 3.81,但我在新的GNU make 4.0的文档中找不到任何内容)
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变得有点困难,但它将所有逻辑放在一个地方.