我的makefile中设置了几个环境变量,它们都有一个共同的前缀,而其他环境变量没有共享前缀。如何获取做具有该前缀的所有变量,并在其前面添加-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 :(得分:0)
如果你有一个足够新版本的GNU make,你可以使用.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)))