6.8. The `AlwaysBuild` Function
Prev | Chapter 6. Dependencies | Next

## 6.8. The `AlwaysBuild` Function

How SCons handles dependencies can also be affected by the `AlwaysBuild` method. When a file is passed to the `AlwaysBuild` method, like so:

    hello = Program('hello.c')
    AlwaysBuild(hello)

Then the specified target file (`hello` in our example) will always be considered out-of-date and rebuilt whenever that target file is evaluated while walking the dependency graph:

    % scons -Q
    cc -o hello.o -c hello.c
    cc -o hello hello.o
    % scons -Q
    cc -o hello hello.o

The `AlwaysBuild` function has a somewhat misleading name, because it does not actually mean the target file will be rebuilt every single time SCons is invoked. Instead, it means that the target will, in fact, be rebuilt whenever the target file is encountered while evaluating the targets specified on the command line (and their dependencies). So specifying some other target on the command line, a target that does not itself depend on the `AlwaysBuild` target, will still be rebuilt only if it's out-of-date with respect to its dependencies:

    % scons -Q
    cc -o hello.o -c hello.c
    cc -o hello hello.o
    % scons -Q hello.o
    scons: `hello.o' is up to date.

Prev | Up | Next
6.7. Order-Only Dependencies: the `Requires` Function | Home | Chapter 7. Environments