Even when using the VariantDir
function,
it is more natural to use it with
a subsidiary SConscript
file,
because then you don't have to adjust your individual
build instructions to use the variant directory path.
For example, if the
src/SConscript
looks like this:
env = Environment() env.Program('hello.c')
Then our SConstruct
file could look like:
VariantDir('build', 'src') SConscript('build/SConscript')
Yielding the following output:
%ls src
SConscript hello.c %scons -Q
cc -o build/hello.o -c build/hello.c cc -o build/hello build/hello.o %ls build
SConscript hello hello.c hello.o
This is completely equivalent
to the use of SConscript
with the
variant_dir
argument
from earlier in this chapter,
but did require callng the SConscript using the already established
variant directory path to trigger that behavior.
If you call SConscript('src/SConscript')
you would get a normal in-place build in src
.