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.