Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SCons custom builder - build with multiple files and output one file

Tags:

builder

scons

If I have an executable that generates an output from multiple files at a time -

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

Is there a way to write such a custom builder for this? What I have at the moment is -

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

Then it only generates files in a sequence, which is not what I really wanted -

generate_output -o input1.out -f input1.txt
generate_output -o input2.out -f input2.txt
# etc...
like image 702
koo Avatar asked Feb 08 '12 23:02

koo


1 Answers

Try using $SOURCES, see Variable Substitution:

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

It works for me in this simple example:

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

This will work as long as generate_output doesn't require -f to precede each input file.

like image 148
Dave Bacher Avatar answered Sep 19 '22 14:09

Dave Bacher