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 srcSConscript hello.c %scons -Qcc -o build/hello.o -c build/hello.c cc -o build/hello build/hello.o %ls buildSConscript 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.