13.2. Preventing target removal during clean: the `NoClean` Function
Prev | Chapter 13. Controlling Removal of Targets | Next

## 13.2. Preventing target removal during clean: the `NoClean` Function

By default, SCons removes all built targets when invoked with the `-c` option to clean a source tree of built targets. Sometimes, however, this is not what you want. For example, you may want to remove only intermediate generated files (such as object files), but leave the final targets (the libraries) untouched. In such cases, you can use the `NoClean` method to prevent SCons from removing a target during a clean:

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

Notice that the `libfoo.a` is not listed as a removed file:

    % scons -Q
    cc -o f1.o -c f1.c
    cc -o f2.o -c f2.c
    cc -o f3.o -c f3.c
    ar rc libfoo.a f1.o f2.o f3.o
    % scons -c
    scons: Reading SConscript files ...
    scons: done reading SConscript files.
    scons: Cleaning targets ...
    Removed f1.o
    Removed f2.o
    Removed f3.o
    scons: done cleaning targets.

Prev | Up | Next
Chapter 13. Controlling Removal of Targets | Home | 13.3. Removing additional files during clean: the `Clean` Function