Being able to use a command-line build option like
debug=1 is handy,
but it can be a chore to write specific Python code
to recognize each such option
and apply the values to a construction variable.
To help with this,
SCons supports a class to
define such build options easily
and to read build option values from a file.
This allows you to control how the build options affect
construction environments.
The way you do this is by specifying
a file name when you call Options,
like custom.py in the following example:
opts = Options('custom.py')
opts.Add('RELEASE', 'Set to 1 to build for release', 0)
env = Environment(options = opts,
CPPDEFINES={'RELEASE_BUILD' : '${RELEASE}'})
env.Program(['foo.c', 'bar.c'])
Help(opts.GenerateHelpText(env))
|
This then allows us to control the RELEASE
variable by setting it in the custom.py file:
Note that this file is actually executed
like a Python script.
Now when we run SCons:
% scons -Q
cc -o bar.o -c -DRELEASE_BUILD=1 bar.c
cc -o foo.o -c -DRELEASE_BUILD=1 foo.c
cc -o foo foo.o bar.o
|
And if we change the contents of custom.py to:
The object files are rebuilt appropriately
with the new option:
% scons -Q
cc -o bar.o -c -DRELEASE_BUILD=0 bar.c
cc -o foo.o -c -DRELEASE_BUILD=0 foo.c
cc -o foo foo.o bar.o
|