这与 Makefile 仅在发生错误时才执行代码略有不同?.
我想要一个在发生错误时制定的规则或特殊目标(独立于给定目标;不更改每个目标的规则,因为另一个答案似乎暗示了 || 运算符)。
在dmake中有一个特殊的目标 .ERROR,只要检测到错误条件就会执行。GNU make 有类似的东西吗?
(我仍在使用 GNU make 3.81,但我也没有在新的 GNU make 4.0 的文档中找到任何内容)
Gnu 不明确支持它,但有办法破解几乎任何东西。如果任何一个 make 失败,则 Make 返回 1。这意味着如果第一个 make 失败,您可以在命令行上使用错误规则重新运行 make:
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 有点困难,但它将所有逻辑放在一个地方。