寻找一些帮助在makefile中将变量从一个级别传递到下一个级别.我有一个源树,需要构建为在各种目标体系结构上运行.为了保持更高级别的makefile干净,我创建了包含特定于体系结构的信息的单独的makefile,并且只包含使用include伪指令所需的那个.
稍后在makefile中我转移到另一个目录来构建源文件.构建失败,我发现失败是由未传递的体系结构特定变量引起的.
ifeq ($(ARCH),my_arch) | include build/my_archdefs.mk | section 1 endif | <more commands> debug: $(MAKE) -C src debug
构建代码树的makefile位于src目录中.作为一个间隙测量,我在上层makefile中包含了上面引用的第1节,在这种情况下,我注意到变量ARCH没有传递下来.
以下是我发现的几个链接似乎相关但我无法弄清楚我需要做些什么让这个工作.
http://www.gnu.org/software/make/manual/html_node/Options_002fRecursion.html#Options_002fRecursion
http://www.gnu.org/software/make/manual/html_node/Include.html
在我看来,我需要的信息潜伏在我上面引用的链接中,但我只是没有看到它.任何指针都将非常感激.
谢谢.
解决方法
此链接应该有所帮助:
http://www.gnu.org/software/make/manual/html_node/Variables_002fRecursion.html#Variables_002fRecursion
在您的顶级Makefile中添加行导出,所有变量都将导出到您的子制作.
例:
文件Makefile:
ID=asdf export all: @echo ${ID} @make -f Makefile2
文件Makefile2:
all: @echo ${ID}
输出:
$make asdf make[1]: Entering directory `/home/user/Desktop/a' asdf make[1]: Leaving directory `/home/user/Desktop/a'