2014-09-30 42 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中很重要。