2012-02-08 12 views
6

Nếu tôi có một thực thi mà tạo ra một đầu ra từ nhiều file cùng lúc -SCons xây dựng tùy chỉnh - xây dựng với nhiều file và đầu ra một tập tin

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

Có cách nào để viết như một người thợ xây tùy chỉnh cho điều này ? Những gì tôi có vào lúc này là -

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

Sau đó, nó chỉ tạo ra tập tin trong một chuỗi, mà không phải là những gì tôi thực sự muốn -

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

Trả lời

10

Hãy thử sử dụng $SOURCES, xem Variable Substitution:

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

Nó phù hợp với tôi trong ví dụ đơn giản này:

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']) 

Điều này sẽ hoạt động miễn là generate_output không yêu cầu -f để đặt trước mỗi tệp đầu vào.