GNU-make规则中的true命令

时间:2012-10-08 18:34:52

标签: makefile gnu-make

我正在研究实验室中其他人写的Makefile,我在一些规则中看到了一个名为true的命令:

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

force_it:
          true

这里的真实含义是什么?它是由子shell运行的命令吗?如果我用假替换它会发生什么? true是shell调用的二进制文件吗?

作为参考,我在Stackoverflow中发现了另一个问题:Why do makefiles sometimes have 'true ' as part of the build script?,但我认为命令与它们在该线程中所涵盖的命令无关。

1 个答案:

答案 0 :(得分:2)

true是一个命令(通常是可执行文件/bin/true,但通常也是一个内置的shell),它什么都不做并返回成功。如果您要将其替换为false,则force_it:规则将始终失败,从而在此时停止制作过程。

执行此true操作和force_it:规则不执行操作之间的区别在于,如果不执行任何操作,可能会有一些其他force_it:规则,其中操作已添加到makefile中的其他位置。使用true操作,您知道不会有其他操作 - 如果添加了其他操作,则会出现制作错误。