Makefile 将变量从include指令传递到sub make
在makefile中查找将变量从一个级别传递到下一个级别的帮助。我有一个需要构建的源代码树,可以在各种目标体系结构上运行。为了保持较高级别的makefile干净,我创建了单独的makefile,其中包含特定于体系结构的信息,并且只包含使用include指令所需的信息:) 稍后在makefile中,我将传输到另一个目录以构建源文件。构建失败,我发现失败是由于没有传递特定于体系结构的变量造成的Makefile 将变量从include指令传递到sub make,makefile,Makefile,在makefile中查找将变量从一个级别传递到下一个级别的帮助。我有一个需要构建的源代码树,可以在各种目标体系结构上运行。为了保持较高级别的makefile干净,我创建了单独的makefile,其中包含特定于体系结构的信息,并且只包含使用include指令所需的信息:) 稍后在makefile中,我将传输到另一个目录以构建源文件。构建失败,我发现失败是由于没有传递特定于体系结构的变量造成的 ifeq ($(ARCH), my_arch) | include build/my_arc
ifeq ($(ARCH), my_arch) |
include build/my_archdefs.mk | section 1
endif |
<more commands>
debug:
$(MAKE) -C src debug
ifeq($(ARCH),my_ARCH)|
包括构建/my_archdefs.mk |第1节
恩迪夫|
调试:
$(MAKE)-C src调试
构建代码树的makefile位于src目录中。作为权宜之计,我在较低级别的makefile中包含了上面提到的第1节,在本例中,我注意到变量ARCH没有被传递下去
这里有几个链接,我发现似乎相关,但我无法找出我需要做什么,使这项工作。
在我看来,我需要的信息隐藏在我上面提到的链接中,但我只是没有看到它。任何指点都将不胜感激
谢谢。此链接应有助于:
在顶级Makefile中,只需添加行export
,所有变量都将导出到子makes中
例如:
文件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'
供您参考的示例: 下面是顶层的“Makefile” 生成文件 然后,“test”文件夹(相对于当前位置)中还有另一个“Makefile”,如下所示: 生成文件 当您在顶级文件夹中说“makeall”时,它随后将根据当前位置Makefile进行构建,然后根据所述规则在“test”文件夹位置进行构建(在“test”位置获取Makefile以获取构建规则)。因此,当父Makefile导出一些变量时,对于该构建环境,导出的变量将对所有子目录Makefile可见 但是,如果您尝试显式进入“test”文件夹并尝试“makeall”,那么您必须在环境变量之前显式设置它(在前面的例子中,它是在顶级Makefile中设置的)
.谢谢你的链接。这就是我需要的。我只想指出页面上的一行内容,这行内容可能与稍后引用此内容的其他人相关。“如果默认情况下使用export本身导出变量,则除非在export指令中特别提及,否则不会导出名称中包含字母数字和下划线以外字符的变量。”如何仅导出到sub make,而不导出到其他进程?
export ROOT_DIR=${PWD}
all:
$(MAKE) -C test
all:
echo $(ROOT_DIR)