J
Jorgen Grahn
.
Unless you count the one ClearCase and its clearmake utility uses:
It keeps track of the /versions/ of all things involved in creating
the target. If someone, at some time, ran "cc -c foo.c" with "cc",
"foo.c" and "foobar.h" at the same revision level that you have now,
don't run the compiler, just "wink in" (to use their term) the foo.o
which was generated last time.
IIRC, that breaks horribly if clearmake doesn't know of all foo.o's
dependencies, which means you have to be pretty darn sure your
Makefile is correct at all times. On the other hand, you can go from a
clean build directory to a ready build without running the compiler or
linker a single time!
/Jorgen
There are only two types of systems for identifying if a file is out of
date. Timestamp based systems are one. Content based systems are annother.
With content based systems, the build system maintains a copy of the source
file, and dependencies (headers) that resulted in the current output file.
The system rebuilds the source only if the current file's contents are
different from the stored copy.
Unless you count the one ClearCase and its clearmake utility uses:
It keeps track of the /versions/ of all things involved in creating
the target. If someone, at some time, ran "cc -c foo.c" with "cc",
"foo.c" and "foobar.h" at the same revision level that you have now,
don't run the compiler, just "wink in" (to use their term) the foo.o
which was generated last time.
IIRC, that breaks horribly if clearmake doesn't know of all foo.o's
dependencies, which means you have to be pretty darn sure your
Makefile is correct at all times. On the other hand, you can go from a
clean build directory to a ready build without running the compiler or
linker a single time!
/Jorgen