16.5. Finding derived files in repositories
Prev | Chapter 16. Building From Code Repositories | Next

## 16.5. Finding derived files in repositories

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.

Prev | Up | Next
16.4. Finding the `SConstruct` file in repositories | Home | 16.6. Guaranteeing local copies of files