[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