我有以下项目结构:
project/
- Makefile
- foo/
- foo.mk
- bar/
- bar.mk
内容Makefile
:
.PHONY: all foo bar
all: foo bar
include foo/foo.mk
include bar/bar.mk
内容foo/foo.mk
:
SOME_VAR=foo
foo:
@echo $(SOME_VAR)
内容bar/bar.mk
:
SOME_VAR=bar
bar:
@echo $(SOME_VAR)
运行命令make
产生输出
bar
bar
观察到的输出很容易解释:配方中的变量仅在执行规则时才展开,因此 whenSOME_VAR
在bar.mk
规则中被覆盖用于foo
打印bar
。有什么办法可以防止这种行为吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句