Preventing Removal of Targets: the Precious Function

By default, SCons removes targets before building them. Sometimes, however, this is not what you want. For example, you may want to update a library incrementally, not by having it deleted and then rebuilt from all of the constituent object files. In such cases, you can use the Precious method to prevent SCons from removing the target before it is built:

    env = Environment()
    lib = env.Library('foo', ['f1.c', 'f2.c', 'f3.c'])
    env.Precious(lib)
 

Although the output doesn't look any different, SCons does not, in fact, delete the target library before rebuilding it:

    % scons -Q
    cc -c -o f1.o f1.c
    cc -c -o f2.o f2.c
    cc -c -o f3.o f3.c
    ar r libfoo.a f1.o f2.o f3.o
    ranlib libfoo.a
 

SCons will, however, still delete files marked as Precious when the -c option is used.