Makefile规则定义中的分号

19

我在一个Makefile中看到了很多类似于这样的规则:

$(PATH)/foo.inc:;
include $(PATH)/foo.inc

$(PATH)/bar.inc:;
include $(PATH)/bar.inc

在规则定义的末尾的分号是无操作符还是具有特定含义?


在这种情况下,它是一个无操作。如果后面跟着同一行的某些内容,那么它将不再是一个无操作。 - Jonathan Leffler
这是一个空操作,但需要记住的是它可以防止隐式规则发生。只有使用 : 而没有配方时,将使用隐式规则(如果存在),而使用 :; 则表示空配方。 - graywolf
1个回答

24

在GNU make中,带有目标先决条件的行上的分号是执行此规则的第一条命令行。

来自手册第5章:

规则的命令由要逐个执行的Shell命令行组成。每条命令行必须以制表符开始,除了第一条命令行可以用分号与目标和先决条件行连接起来。

在您的情况下,由于分号后面没有其他命令,因此它最终成为无操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接