2014-09-19 74 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