【发布时间】:2011-06-14 22:04:53
【问题描述】:
这是我的另一个 question 的一个分支。
为了使用导出变量,我需要做些什么特别的事情吗?
所以我从一个包含另一个位置的主 Makefile 的 Makefile 运行它。在这个本地 Makefile 中,我有:
include /path/to/master/Makefile/
export TOOL = A
现在我的主 Makefile 中有:
ifeq ( $(TOOL), A )
echo "Tool A will be run..."
[syntax for toolA]
else
echo "Tool B will be run..."
[syntax for toolB]
endif
但是当我运行 gmake 时,toolB 总是在运行!我检查了变量 $(TOOL),它显示了 A。我做错了什么?
谢谢!!
编辑:添加 Makefile 示例。
对于我的问题,将包含移动到之后导出解决了我的问题。但这是一个现有的 Makefile,并且在最顶部包含包含始终有效!
include 语句在本地的顶部,所有的导出在底部。只有我的新出口线失败。有谁知道为什么?
本地 Makefile
export TOOL A
include /path/to/master/Makefile
export VERSION IMP-IR5
主 Makefile
export VERSION IAP-100
ci:
ifeq ( $(TOOL), A )
echo "Tool A will be run..."
[syntax for toolA]
echo $(VERSION)
else
echo "Tool B will be run..."
[syntax for toolB]
echo $(VERSION)
endif
输出
echo "Tool A will be run..."
Tool A will be run...
echo IMP-IR5
IMP-IR5
但如果我将顶部切换到本地 Makefile 中的行(就像原来一样):
include /path/to/master/Makefile
export TOOL A
export VERSION IMP-IR5
我明白了:
echo "Tool B will be run..."
Tool B will be run...
echo IMP-IR5
IMP-IR5
为什么 IMP-IR5 可以通过而不是工具 A?好迷茫……
【问题讨论】:
标签: unix if-statement makefile global-variables