The above example
specifies that SCons
will first search for files under
the /usr/repository1
tree
and next under the /usr/repository2
tree.
SCons expects that any files it searches
for will be found in the same position
relative to the top-level directory.
In the above example, if the hello.c
file is not
found in the local build tree,
SCons will search first for
a /usr/repository1/hello.c
file
and then for a /usr/repository2/hello.c
file
to use in its place.
So given the SConstruct
file above,
if the hello.c
file exists in the local
build directory,
SCons will rebuild the hello
program
as normal:
% scons -Q
cc -o hello.o -c hello.c
cc -o hello hello.o
If, however, there is no local hello.c
file,
but one exists in /usr/repository1
,
SCons will recompile the hello
program
from the source file it finds in the repository:
% scons -Q
cc -o hello.o -c /usr/repository1/hello.c
cc -o hello hello.o
And similarly, if there is no local hello.c
file
and no /usr/repository1/hello.c
,
but one exists in /usr/repository2
:
% scons -Q
cc -o hello.o -c /usr/repository2/hello.c
cc -o hello hello.o
The Glob
function understands about repositories,
and will use the same matching algorithm as described for
explicitly-listed sources.