2013-02-12 5 views
0

for 루프에서 다른 변수로 해석되는 변수를 얻으려고하고 있는데 어떻게해야 하는지를 알 수 없습니다. 내 테스트는 다음과 같습니다.makefile은 루프에서 변수를 해석합니다.

TEST= one two three 

one := one1 
two := two2 
three := three3 

all: 
    @echo $(TEST) 
    @for NUM in $(TEST) ; do \ 
     echo $($$NUM) ; \ 
    done ; exit 0 

foo: 
    echo 

최종 결과 : 하나의 중앙 메이크 파일을 가리키는 포함 된 Makefile이 여러 개 있습니다. 나는이 개별 메이크 파일에 다양한 파일이 포함되어있어 서로 연결될 수 있기를 바라고 싶지만 각기 다른 디렉터리에는 서로 다른 파일이 있습니다. 따라서,./1의 makefile은 다음과 같을 수 있습니다. one : = "file0 file1 file2" two : = "other0 other1 other2" three : "boo.txt blah.txt" ../main.mk

및 ./2/ 하나가 될 수 있습니다 = "file0 file5 file6" 이 = "foo는 바 바즈" 세 : = "blah.txt" 이 ../main.mk

답변

1

을 포함하는 것이 당신이 작성한대로 작동하지 않습니다. 당신은 경계를 넘고 있습니다.

셸 루프가 실행될 무렵에 make 변수가 이미 확장되었으므로 루프 본문의 끝 부분은 'echo;'입니다.

원하는 출력을 얻으려면 make 레벨에서 루프를 수행해야합니다. 같은

뭔가 :

TEST= one two three 

one := one1 
two := two2 
three := three3 

define loop 
     $(foreach n,$(TEST),@echo $($n) 
) 
endef 

all: 
     @echo $(TEST) 
     $(loop) 

난 그냥 순간에 표시되지 않는 약간 간단한 방법이 있어야합니다 같은 느낌이지만

.

관련 문제