【发布时间】:2020-04-21 14:15:16
【问题描述】:
我正在尝试 GNU Make 分组目标,但似乎误解了一些东西,因为目标没有按我的预期分组。这是我的makefile:
all: foo bar
.PHONY: foo bar
foo bar &:
@echo grouped target run for \"target\" $@
然后输出:
$ make
grouped target run for "target" foo
grouped target run for "target" bar
配方针对每个目标运行,因此不分组。我在这里错过了什么?
GNU Make 版本 4.2.1。
【问题讨论】:
-
你确定你没有开枪打自己的脚吗?您的示例将
all定义为默认目标,并且该目标取决于foo 和bar。换句话说,all表示同时执行foo和bar。如果你从上面删除all: foo bar,所以foo bar &是默认值,你会看到不同的结果。 -
@AndrewFalanga 使默认目标是第一个目标,而不是第一条规则中的所有目标。将
foo bar &作为第一条规则使foo成为默认目标。