Makefile 将变量从include指令传递到sub make

Makefile 将变量从include指令传递到sub make,makefile,Makefile,在makefile中查找将变量从一个级别传递到下一个级别的帮助。我有一个需要构建的源代码树,可以在各种目标体系结构上运行。为了保持较高级别的makefile干净,我创建了单独的makefile,其中包含特定于体系结构的信息,并且只包含使用include指令所需的信息:) 稍后在makefile中,我将传输到另一个目录以构建源文件。构建失败,我发现失败是由于没有传递特定于体系结构的变量造成的 ifeq ($(ARCH), my_arch) | include build/my_arc

在makefile中查找将变量从一个级别传递到下一个级别的帮助。我有一个需要构建的源代码树,可以在各种目标体系结构上运行。为了保持较高级别的makefile干净,我创建了单独的makefile,其中包含特定于体系结构的信息,并且只包含使用include指令所需的信息:)

稍后在makefile中,我将传输到另一个目录以构建源文件。构建失败,我发现失败是由于没有传递特定于体系结构的变量造成的

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)