The Link method may be used in conjunction with multiple
construction environments to support variant builds. The following
SConstruct and SConscript files would build separate debug and
production versions of the same program side-by-side:
% cat SConstruct
env = Environment()
env.Link('build/debug', 'src')
env.Link('build/production', 'src')
flags = '-g'
SConscript('build/debug/SConscript', Export(env))
flags = '-O'
SConscript('build/production/SConscript', Export(env))
% cat src/SConscript
env = Environment(CCFLAGS = flags)
env.Program('hello', 'hello.c')
The following example would build the appropriate program for the current compilation platform, without having to clean any directories of object or executable files for other architectures:
% cat SConstruct
build_platform = os.path.join('build', sys.platform)
Link(build_platform, 'src')
SConscript(os.path.join(build_platform, 'SConscript'))
% cat src/SConscript
env = Environment
env.Program('hello', 'hello.c')