Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SCons: How to use the same builders for multiple variants (release/debug) of a program

The SCons User Guide tells about the usage of Multiple Construction Environments to build build multiple versions of a single program and gives the following example:

opt = Environment(CCFLAGS = '-O2')
dbg = Environment(CCFLAGS = '-g')

o = opt.Object('foo-opt', 'foo.c')
opt.Program(o)

d = dbg.Object('foo-dbg', 'foo.c')
dbg.Program(d)

Instead of manually assigning different names to the objects compiled with different environments, VariantDir() / variant_dir sounds like a better solution...

But if I place the Program() builder inside the SConscript:

Import('env')
env.Program('foo.c')

How can I export different environments to the same SConscript file?

opt = Environment(CCFLAGS = '-O2')
dbg = Environment(CCFLAGS = '-g')

SConscript('SConscript', 'opt', variant_dir='release') #'opt' --> 'env'???
SConscript('SConscript', 'dbg', variant_dir='debug')   #'dbg' --> 'env'???

Unfortunately the discussion in the SCons Wiki does not bring more insight to this topic.

Thanks for your input!

like image 853
OK. Avatar asked Mar 17 '10 16:03

OK.


1 Answers

SConscript is a method defined on the environment itself:

for dir, env in (('release', opt), ('debug', dbg)):
    env.SConscript('SConscript', 'env', variant_dir=dir)

And then from the SConscript you can:

Import('env')
like image 148
BenG Avatar answered Nov 03 '22 22:11

BenG