2017-01-04 8 views
0

Makefileで変数自体を展開することが可能かどうか疑問に思っていました。この効果に何か:別の変数で展開変数を作成する

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

ALL_VARS変数のようなものになるはずである使用:

var1 var2 

は、この可能性のようなものですか?あなたの変数は、規則的なパターン(例えばVAR1VAR2、など)あなたは、変数の茎とforeachを使用するためのシーケンスを生成することができますに従って行う場合

は事前

答えて

0

標準メイクではできません。あなたはGNU makeを持っている、とあなたの変数名は(メイク)パターンに一致する場合でも、あなたが使用することができます。

VAR1 = var1 
VARFoo = varfoo 
VAR-big = var-big 

ALL_VARS = $(foreach V,$(filter VAR%,$(.VARIABLES)),$($V)) 

$(info ALL_VARS = $(ALL_VARS)) 

はあなたを取得する必要があります順序は必ずしも保証されません

var1 varfoo var-big 

が。

0

でいただきありがとうございます。このような何か:

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)) 
1

あなたは、例えば、かなり単純$(filter ...) builtin function と特殊変数.VARIABLESを使用することによってこれを行うことができます

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

all: 
    @echo $(ALL_VARS) 
+0

Heh ...同時に入力しています:) – MadScientist

関連する問題