我正在研究实验室中其他人写的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?,但我认为命令与它们在该线程中所涵盖的命令无关。
答案 0 :(得分:2)
true
是一个命令(通常是可执行文件/bin/true
,但通常也是一个内置的shell),它什么都不做并返回成功。如果您要将其替换为false
,则force_it:
规则将始终失败,从而在此时停止制作过程。
执行此true
操作和force_it:
规则不执行操作之间的区别在于,如果不执行任何操作,可能会有一些其他force_it:
规则,其中操作已添加到makefile中的其他位置。使用true
操作,您知道不会有其他操作 - 如果添加了其他操作,则会出现制作错误。