2014-01-20 2 views
0

패턴 규칙을 사용하여 여러 디렉토리의 종속성 및 대상에 적용하는 데 문제가 있습니다. 다음은 내 문제를 설명하기위한 예입니다.Makefile의 패턴 규칙 및 다중 디렉토리

모든 * .A 파일에 적용 할 수있는 다음 디렉토리 구조 나 패턴 규칙을 지정할 수 있도록하려면

|- dir 1 
| - file1.A 
|- dir 2 
| - file2.A 
|- dir 3 
| - dir 4 
| - file4.A 

를 생각해 보자.

%.B: %.A 
    myscript $< 

이것을 지정하는 가장 좋은 방법은 무엇입니까?

해킹으로 다음을 시도했지만 암묵적이고 정적 인 규칙이 혼합되어 있다는 오류가 발생했습니다.

*/%.B: */%.A: 
    myscript $< 

*/*/%B: */%.A: 
    myscript $< 

어떤 도움을 주시면 감사하겠습니다.

+0

첫 번째 규칙은 당신이 올바르게 사용하는 경우, 작동 (즉'DIR1/file1.B' 확인)를. 너 뭐하려고? – Beta

+0

나는 모든 % .B 파일을 만들기 위해 실행할 수있는 하나의 규칙'all'을 원한다. – Ramnath

답변

1
A_FILES := $(shell find . -type f -name '*.A') 
B_FILES := $(patsubst %.A,%.B,$(A_FILES)) 

all: $(B_FILES) 

%.B: %.A 
    myscript $< 

일부 플랫폼이 작동합니다

A_FILES := $(wildcard **/*.A) 
+0

감사합니다. 그게 잘됐다! – Ramnath