在另一个变量中扩展变量

时间:2017-01-04 09:44:44

标签: variables makefile expansion

我想知道是否可以在Makefile中扩展变量。有这样的效果:

VAR1 = var1
VAR2 = var2
ALL_VARS = $(VAR*)

使用ALL_VARS变量应该会产生类似:

var1 var2

这样的事情可能吗?

提前谢谢

3 个答案:

答案 0 :(得分:1)

您可以使用$(filter ...) builtin function相当简单地完成此操作 和特殊变量.VARIABLES,例如

VARX = var1
VARY = var2
ALL_VARS = $(foreach var,$(filter VAR%,$(.VARIABLES)),$($(var)))

all: 
    @echo $(ALL_VARS)

答案 1 :(得分:0)

如果变量确实遵循常规模式(例如VAR1VAR2等),则可以生成变量词干的序列并使用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

虽然订单未必保证。