[Scons-users] Custom builder

William Roberts bill.c.roberts at gmail.com
Fri Sep 7 05:00:58 EDT 2012

I am having issues wrapping a custom builder in a custom class.

Suppose I have the following SConstruct file that calls a SConscript file:

#Miniat is my custom wrapper for building
miniat = MiniatBuilder(rootdir, libdir, exedir, env, q)
SConscript(script, variant_dir=q, duplicate=1, exports=[ 'miniat' ] )

Then in the SConscript file, I do something like:

f = miniat.flex('src/lex.yy.c', 'src/0x1_assembler.lex')

In the MiniatBuilder constructor I do:

self._env = env
bld = self._env.Builder(action = 'flex -i -o $TARGET $SOURCE',
src_suffix = '.lex')
self._env['BUILDERS']['Flex'] = bld

I get the following output:

flex -i -o
flex: option `o' requires an argument
Try `flex --help' for more information.

But if I take that same code, and append to the enviroment in the
SConscript file, it works:


env = miniat._env
bld = Builder(action = 'flex -i -o $TARGET $SOURCE',
src_suffix = '.flex')
env.Append(BUILDERS = {'Flex' : bld})

f = env.Flex('src/lex.yy.c', 'src/0x1_assembler.lex')

Can someone please shed some light?


William C Roberts

More information about the Scons-users mailing list