0

我正在研究我实验室中其他人编写的 Makefile,我看到一个true在某些规则中调用的命令:

other_rule_A: YYY force_it
          ....
other_rule_B: XXX force_it
          ....

force_it:
          true

这里的真实是什么意思?它是子shell运行的命令吗?如果我将其替换为 false 会发生什么?shell是否true调用了二进制文件?

作为参考,我在 Stackoverflow 中发现了另一个问题:为什么 makefiles 有时将 'true' 作为构建脚本的一部分?,但我认为 command 与他们在该线程中涵盖的命令无关。

4

1 回答 1

2

true是一个不执行任何操作并返回成功的命令(通常是可执行文件/bin/true,但通常也是内置的 shell)。如果您将其替换为false,则该force_it:规则将始终失败并因此在此时停止 make 过程。

true有这个动作和没有动作的规则之间的区别在于,force_it:如果没有动作,可能会有一些其他force_it:规则在 makefile 的其他地方添加了动作。有了一个true动作,你就知道不可能有其他动作——如果添加了另一个动作,你会得到一个 make 错误。

于 2012-10-08T18:43:34.710 回答