2012-02-08 2 views
6

나는 한 번에 여러 파일에서 출력을 생성하는 실행 파일이있는 경우 -SCons는 사용자 정의 빌더 - 여러 파일과 출력 하나 개의 파일로 만들

generate_output -o a.out -f input1.txt input2.txt input3.txt 

을 이것에 대한 이러한 사용자 정의 빌더를 작성하는 방법이 ? 내가 지금있는 것은 - 그리고

builder = Builder(
     action='generate_output -o $TARGET -f $SOURCE', 
     suffix='.out', src_suffix='.txt') 

단지 시퀀스 파일을 생성, 정말 원하지 않는 무엇이다 -

generate_output -o input1.out -f input1.txt 
generate_output -o input2.out -f input2.txt 
# etc... 

답변

10

$SOURCES를 사용해보십시오, Variable Substitution를 참조하십시오

builder = Builder(
     action='generate_output -o $TARGET -f $SOURCES', 
     suffix='.out', src_suffix='.txt') 

이 간단한 예에서 나에게 적합합니다.

env = Environment() 

builder = Builder(action='cat $SOURCES > $TARGET', 
     suffix='.out', src_suffix='.txt') 

env = Environment(BUILDERS = {'MyBld' : builder}) 

env.MyBld('all', ['a.txt', 'b.txt', 'c.txt']) 

각 입력 파일 앞에 -f이 필요하지 않은 한 generate_output까지 작동합니다.