2014-09-30 24 views
2

我在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'吗? – 2014-09-30 05:20:55

+0

只在构建过程中调用Make。所以不会'出口VAR'做这份工作吗? – step 2014-09-30 06:51:33

回答

2

在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)" 
+0

谢谢!它帮助! – step 2014-09-30 07:38:26

+3

你为什么在这里使用eval?这看起来像是非常不必要地使用非常先进的概念。 – MadScientist 2014-09-30 11:38:55

1

您的代码不工作,你所期望的方式,因为你$(VAR)之前有一个额外的空间 - 它应该是:

ifeq ($(VAR),something) 

有时空间在makefile中很重要。