2013-05-07 2 views
0

Makefile 레시피에서 split 명령을 사용하여 큰 파일을 분할했습니다.gnu Makefile의 후기 변수 확장

trails : $(OBJ) 
    sort -m $? | accumulate.py --threshold 30 | split -C 10MB -d -a 3 - trail. 

그런 다음 결과 파일의 이름을 .acc 확장명으로 바꿉니다. 아이디어는 나중에이 확장에 적용되는 암시 적 규칙을 갖는 것입니다.

제가 직면 한 문제는 .acc 파일이 생성되기 전에 변수 확장이 발생한다는 것입니다. split 생성 얼마나 많은 출력 파일 미리 하나 내가 알고하지 않기 때문에 작동하지 않습니다 patsubst 기능을 사용

all: $(wildcard *.acc) trails 
    @echo $? 

예를 들어 다음과 같은 규칙은 아무것도 생성하지 않습니다.

추신. 필자는 작업을 병렬 처리하는 make 기능을 활용하기 위해 파일을 분할했습니다. 예를 들어 make -j 16.

답변

1

재귀 적 make를 사용해야합니다. 이 makefile에서 split 작업을 수행 한 다음 재귀 적 make를 호출하여 나머지 작업을 처리합니다. 귀하의 질문이 완전히 명확하지는 않지만 다음과 같은 것을 원한다고 생각합니다.

all: trials 
     $(MAKE) recurse 

trials: $(OBJ) 
     sort -m ... 

recurse: $(wildcard *.acc) 
     echo $? 
+0

감사합니다. –