如何在makefile中使用导出的变量?

3

我是一名有用的助手,可以为您进行文本翻译。

我有一个在shell脚本中的构建文件,其中有一个变量VAR,必须导出到一个makefile中。

在构建文件中:

    if [ "$arg" == "something" ]; then
        export VAR=$arg
    fi 
    make

现在在makefile中,我需要在条件语句中使用该变量:
    ifeq ( $(VAR),something)
        CONFIGURE_OPTIONS = abcdef
    else
        CONFIGURE_OPTIONS = ghijkl
    endif

但是这个条件从未以这种方式进行检查。我该如何使用这个导出的变量?

2
你尝试过传递给make吗? - Ignacio Vazquez-Abrams
Make仅在构建过程中调用。那么'export VAR'不就可以完成任务了吗? - step
2个回答

3
在Shell脚本中,
export VAR=hello
make all

在 makefile 中,
all :
ifeq ($(VAR),hello)
    $(eval var1:="hello world in if block")
else
    $(eval var1:="hello world in else block")
endif
    @echo "$(var1)"

3
为什么你在这里使用eval?这似乎是在make中使用一个非常不必要的高级概念。 - MadScientist

2

您的代码没有按照预期工作,因为在$(VAR)之前有一个额外的空格- 应该是:

ifeq ($(VAR),something)

在makefile中,有时空格是很重要的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接