[CMake] ExternalProject and redundant update/configure/compile actions.
David Cole
dlrdave at aol.com
Mon Sep 16 11:03:32 EDT 2013
If you don't want the update step to pull changes from the repository,
then use:
UPDATE_COMMAND ""
Otherwise, if you are building from a live repo, then the update step
witl ALWAYS run in case something has changed upstream. Then, all the
subsequent steps after update must also run just in case update pulled
down some new changes.
That's the best ExternalProject can do in its present form. (Don't know
who you talked to that told you "things are better now," but maybe what
he meant was "there are other ways to do it that avoid that particular
problem...")
I can imagine that you might add a "there were 0 things pulled down
during update, please don't re-run subsequent steps", ... but still, if
any single file was added/modified/deleted, then we have no choice but
to run incremental configure/build/install steps after that.
It's nice to have grand unified super builds, but dependency analysis
for ExternalProject is at the project level. For that reason, super
builds are really best suited to building static tarball snapshots, or
"snapped to a tag or date" repo snapshots that do not require an update
step.
I can't imagine you would possible want all 35 or so of your
sub-projects to be snapped to the live repos. Otherwise, you are
depending on all of them remaining stable in order for your developers
to get a good build of the whole system. Snapping to a known commit for
most of them would seem to me to be appropriate here.
Hope this helps,
David
More information about the CMake
mailing list