makefile – 将变量从include伪指令传递给sub-make

前端之家收集整理的这篇文章主要介绍了makefile – 将变量从include伪指令传递给sub-make前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
寻找一些帮助在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'

猜你在找的C&C++相关文章