2014-02-07 28 views
0

我在我的生成文件中設置了幾個環境變量,它們都有一個公共前綴,而其他的不共享前綴。我怎樣才能抓住做的有前綴的所有變量,並在其前面加上-D,然後將這些全部設置爲一個新的變量?請看下圖:如何使用通配符獲取環境變量?

ENVIRONMENT VARIABLES 
===================== 

FOOD_VEGETABLE 
FOOD_FRUIT 
FOOD_DESSERT 
HEAT 
GAS 

所以我希望有一個新的變量FOOD_FEATURES抓住所有的FOOD_*變量,並在前面加上一個前綴-D。如果我打印FOOD_FEATURES我會得到這樣的:

$(warning $(FOOD_FEATURES)) 

-DFOOD_VEGETABLE -DFOOD_FRUIT -DFOOD_DESSERT 

回答

0

如果你有GNU的足夠新版本的製作,你可以使用.VARIABLES特殊變量這種內省:

FOOD_FEATURES := $(patsubst %,-D%,$(filter FOO_%,$(.VARIABLES))) 

我應該指出,這將匹配所有包含前綴FOO_的make變量,而不僅僅是環境變量。如果你真的只想要可行的環境變量,但要複雜得多;例如:

FOOD_FEATURES := $(patsubst %,-D%,$(foreach V,$(filter FOO_%,$(.VARIABLES)),$(if $(filter environment,$(origin $V)),$V)))