If a repository contains not only source files,
but also derived files (such as object files,
libraries, or executables), SCons will perform
its normal MD5 signature calculation to
decide if a derived file in a repository is up-to-date,
or the derived file must be rebuilt in the local build directory.
For the SCons signature calculation to work correctly,
a repository tree must contain the .sconsign
files
that SCons uses to keep track of signature information.
Usually, this would be done by a build integrator
who would run SCons in the repository
to create all of its derived files and .sconsign
files,
or who would run SCons in a separate build directory
and copy the resulting tree to the desired repository:
%cd /usr/repository1
%scons -Q
cc -o file1.o -c file1.c cc -o file2.o -c file2.c cc -o hello.o -c hello.c cc -o hello hello.o file1.o file2.o
(Note that this is safe even if the SConstruct
file
lists /usr/repository1
as a repository,
because SCons will remove the current build directory
from its repository list for that invocation.)
Now, with the repository populated,
we only need to create the one local source file
we're interested in working with at the moment,
and use the -Y
option to
tell SCons to fetch any other files it needs
from the repository:
%cd $HOME/build
%edit hello.c
%scons -Q -Y /usr/repository1
cc -c -o hello.o hello.c cc -o hello hello.o /usr/repository1/file1.o /usr/repository1/file2.o
Notice that SCons realizes that it does not need to
rebuild local copies file1.o
and file2.o
files,
but instead uses the already-compiled files
from the repository.