Creating a &Builder; and attaching it to a &consenv;
allows for a lot of flexibility when you
want to re-use actions
to build multiple files of the same type.
This can, however, be cumbersome
if you only need to execute one specific command
to build a single file (or group of files).
For these situations, &SCons; supports a
&Command; &Builder; that arranges
for a specific action to be executed
to build a specific file or files.
This looks a lot like the other builders
(like &b-link-Program;, &b-link-Object;, etc.),
but takes as an additional argument
the command to be executed to build the file:
env = Environment()
env.Command('foo.out', 'foo.in', "sed 's/x/y/' < $SOURCE > $TARGET")
% scons -Q
sed 's/x/y/' < foo.in > foo.out
This is often more convenient than
creating a &Builder; object
and adding it to the &cv-link-BUILDERS; variable
of a &consenv;
Note that the action you
env = Environment()
def build(target, source, env):
# Whatever it takes to build
return None
env.Command('foo.out', 'foo.in', build)
% scons -Q
build(["foo.out"], ["foo.in"])