19

这与 Makefile 仅在发生错误时才执行代码略有不同.

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

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

(我仍在使用 GNU make 3.81,但我也没有在新的 GNU make 4.0 的文档中找到任何内容)

4

1 回答 1

24

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

于 2014-01-15T02:10:44.803 回答