我在一个Makefile中看到了很多类似于这样的规则:
$(PATH)/foo.inc:;
include $(PATH)/foo.inc
$(PATH)/bar.inc:;
include $(PATH)/bar.inc
在规则定义的末尾的分号是无操作符还是具有特定含义?
我在一个Makefile中看到了很多类似于这样的规则:
$(PATH)/foo.inc:;
include $(PATH)/foo.inc
$(PATH)/bar.inc:;
include $(PATH)/bar.inc
在规则定义的末尾的分号是无操作符还是具有特定含义?
在GNU make中,带有目标先决条件的行上的分号是执行此规则的第一条命令行。
来自手册第5章:
规则的命令由要逐个执行的Shell命令行组成。每条命令行必须以制表符开始,除了第一条命令行可以用分号与目标和先决条件行连接起来。
在您的情况下,由于分号后面没有其他命令,因此它最终成为无操作。
:
而没有配方时,将使用隐式规则(如果存在),而使用:;
则表示空配方。 - graywolf