2014-09-19 68 views
1

我需要解析Makefile中的字符串並獲取賦值給字符串中解析的變量的值。 字符串包含此數據「Days = false; export Day; EXTRACT = true; export EXTRACT」。 首先,我需要檢查一個變量(例如Days)是否存在於字符串中。如果它想要獲取變量的值。在makefile中解析字符串

我試過findstring函數我可以驗證變量存在於字符串中,但我發現如何獲取賦值給變量的值。 str1 := Days='true';export Days;EXTRACT=true;export EXTRACT; a := $(findstring Days=, $(str1))

+1

如果字符串已知/保證是一組外殼分配,我只需在shell中運行它們並在'$(shell)'調用結束時'echo'您想要的值來執行此操作。 – 2014-09-19 13:29:30

回答

0
str1 := Days='true';export Days;EXTRACT=true;export EXTRACT; 

define VARIABLE_EQ_VALUE_IN_STRING 
$(eval $(filter $1=%, $(subst ;, ,$2))) 
endef 

$(call VARIABLE_EQ_VALUE_IN_STRING,Days, $(str1)) 

此代碼後,$(Days)'true'

在另一方面,如果str1不包含賦值Days那麼這段代碼後,Days將是不確定的。

+0

感謝它對單個值工作正常。但我有時將值作爲數值列表,例如Days ='1 3 5',在那裏它會失敗。可以建議更改以正確獲取這些值。我無法對upvote answer,因爲我不'不需要聲望。 – nam 2014-09-21 06:20:25

+0

在這種情況下,我可能會第二次Etan的答案。 – 2014-09-23 21:10:48