SCons custom builder - сборка из нескольких файлов и вывод одного файла - PullRequest
6 голосов
/ 09 февраля 2012

Если у меня есть исполняемый файл, который генерирует вывод из нескольких файлов одновременно -

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...

1 Ответ

10 голосов
/ 09 февраля 2012

Попробуйте использовать $SOURCES, см. Замена переменных :

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

Это будет работать до тех пор, пока generate_output не требуется -f перед каждым входным файлом.

...