2013-04-26 5 views
0

일부 하위 이름을 기반으로 파일 경로를 계산해야합니다. 아래의 MWE를 참조하십시오. 좀 더 쉬운 방법을 얻을 수 있나요? 내 aa, ab, ac 및 아래의 접근 방법을 참조하십시오.메이크 파일에서 파일 경로 계산하기

동일한 순서로 실행하는 make에 의존하여 $ (subsystem)을 두 번 사용하지 않으려 고합니다. $ (patsubst)를 사용하여 시도했지만, %의 첫 번째 인스턴스 만 대체합니다. 어떤 힌트를 주시겠습니까? 제대로 출력

# 
## Given some subsystem names 
subsystem := pi_sub_chris \ 
      pi_sub_rob \ 
      pi_sub_greg 

# 
## And an output directory 
dir_export := ../pi_sw/export 

# 
## Calculate a file path in export directory to be made 
## Is there a better way to do this!? 
aa := $(addprefix $(dir_export)/,$(subsystem)) 
ab := $(addsuffix /a2l/, $(aa)) 
ac := $(addsuffix .a2l, $(subsystem)) 
files_to_be_made := $(join $(ab), $(ac)) 

.PHONY : 
go : $(files_to_be_made) 
    @echo Done! 

%.a2l : 
    @echo A perl script is run here to generate file [email protected] 

:

이 변수가 확장되는 순서에 의존 아무 문제가 없습니다
A perl script is run here to generate file ../pi_sw/export/pi_sub_chris/a2l/pi_sub_chris.a2l 
A perl script is run here to generate file ../pi_sw/export/pi_sub_rob/a2l/pi_sub_rob.a2l 
A perl script is run here to generate file ../pi_sw/export/pi_sub_greg/a2l/pi_sub_greg.a2l 
Done! 

답변

3

; 그게 이어야합니다 사실이거나 거의 모든 메이크 파일이 깨집니다. 그것은 절대적으로 보장됩니다. 대답을 제공

files_to_be_made := $(foreach S,$(subsystem),$(dir_export)/$S/a21/$S.a21) 
+0

감사합니다 : 당신이 그것을 좋아하지 않는 경우에

그러나, 당신은 같은 것을 사용할 수 있습니다. 정확히 내가 한 것. – Chris

관련 문제