C++ build systems

J

Jorgen Grahn

.
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
 
J

Jerry Coffin

[ ... using a hash to find whether files have changed ]
Nitpick: it doesn't even have to be cryptographic: I can take
md5sum, and modify it so that if its input starts with

Please note: my hash is d3b07384d113edec49eaa6238ad5ff00

it will return d3b07384d113edec49eaa6238ad5ff00. That's not a
cryptographic, but it's just as useful as one for this purpose.

Quite true -- a cryptographic has is sufficient but not necessary for
the purpose.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,772
Messages
2,569,591
Members
45,103
Latest member
VinaykumarnNevatia
Top