具有多个目标的 Makefile:MAKECMDGOALS 优先处理
Makefiles with multiple targets: MAKECMDGOALS preferential treatment
我正在试验 Makefile,特别是包含多个 target
的 Makefile 规则
考虑这个 Makefile:
x := $(MAKECMDGOALS)
y := Whatever
dummy $(y) $(x) :
@echo target: $@
在这里,一个简单的 make
调用输出 target: dummy
,但是 make xyz
输出 target: xyz
。为什么会这样? MAKECMDGOALS 变量有什么特别之处吗?为什么与 y 相比,变量 x 被处理 'with more importance'?
为什么会和MAKECMDGOALS
有关系?这只是正常行为。
运行 这个 makefile,它根本不使用 MAKECMDGOALS
或变量,你会看到相同的结果:
dummy Whatever xyz:
@echo target: $@
这是因为如果你不在命令行中给出任何目标,make 的默认目标是第一个,在本例中是 dummy
。如果您确实给出了一个目标(例如 make xyz
),那么这就是将要构建的目标。
我正在试验 Makefile,特别是包含多个 target
的 Makefile 规则考虑这个 Makefile:
x := $(MAKECMDGOALS)
y := Whatever
dummy $(y) $(x) :
@echo target: $@
在这里,一个简单的 make
调用输出 target: dummy
,但是 make xyz
输出 target: xyz
。为什么会这样? MAKECMDGOALS 变量有什么特别之处吗?为什么与 y 相比,变量 x 被处理 'with more importance'?
为什么会和MAKECMDGOALS
有关系?这只是正常行为。
运行 这个 makefile,它根本不使用 MAKECMDGOALS
或变量,你会看到相同的结果:
dummy Whatever xyz:
@echo target: $@
这是因为如果你不在命令行中给出任何目标,make 的默认目标是第一个,在本例中是 dummy
。如果您确实给出了一个目标(例如 make xyz
),那么这就是将要构建的目标。