2017-01-04 1 views
0

Makefile에서 변수 자체를 확장 할 수 있는지 궁금합니다. 이 효과에 뭔가 :다른 변수에서 확장 변수 만들기

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

의 원인이해야 ALL_VARS 변수를 사용하여 같은 뭔가가 :

var1 var2 

이 가능한 같은가요? 당신 변수는이 변수의 줄기에 대한 시퀀스를 생성하고 foreach를 사용할 수있는 규칙적인 패턴 (예를 들어 VAR1, VAR2 등)에 따라 경우

사전

답변

0

표준 작성기에서는이를 수행 할 수 없습니다. 당신이 GNU 만들 가지고 있고, 당신의 변수 이름은 (메이크업) 패턴과 일치하는 경우에, 당신은 사용할 수 있습니다

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

ㅎ ... 동시에 입력하는 중 :) – MadScientist

관련 문제