我想知道是否可以在Makefile中扩展变量。有这样的效果:
VAR1 = var1
VAR2 = var2
ALL_VARS = $(VAR*)
使用ALL_VARS变量应该会产生类似:
var1 var2
这样的事情可能吗?
提前谢谢
答案 0 :(得分:1)
您可以使用$(filter ...)
builtin function相当简单地完成此操作
和特殊变量.VARIABLES
,例如
VARX = var1
VARY = var2
ALL_VARS = $(foreach var,$(filter VAR%,$(.VARIABLES)),$($(var)))
all:
@echo $(ALL_VARS)
答案 1 :(得分:0)
如果变量确实遵循常规模式(例如VAR1
,VAR2
等),则可以生成变量词干的序列并使用foreach
。像这样:
NUM ?= 2
GENERATE=$(or $(and $(word $(1), $(2)), $(2)), $(call GENERATE, $(1), $(2) $(words 0 $(2))))
sequence=$(call GENERATE, $(NUM))
VAR1 = var1
VAR2 = var2
ALL_VARS = $(foreach n, $(sequence), $(VAR$n))
$(warning $(ALL_VARS))
答案 2 :(得分:0)
你不能在标准品牌中做到这一点。但是如果你有GNU make,并且你的变量名称与(make)模式匹配,你可以使用:
Content-Type
应该得到你:
Content-Type
虽然订单未必保证。