[CMake] ExternalProject and redundant update/configure/compile actions.

Williams, Norman K norman-k-williams at uiowa.edu
Mon Sep 16 10:50:11 EDT 2013


This has to do with a project we've been working on for a couple of
months; it is a 'grand unified build' system for the Image Processing we
(and probably many others) use for our production image analysis.

You can check it out/examine it here:
https://github.com/BRAINSia/NamicExternalProjects

Currently it builds 35 or so different packages including the usual
suspects like ITK, VTK, Boost, TIFF, JPEG OpenJPEG, PCRE, Swig etc.

As I believe I've posted before to the CMake users list, there is a lot of
redundant steps executed during a build, starting with Updating the source
code from the remote (cvs|svn|git) server.  This triggers a cascade of
unnecessary, redundant build steps.

1. if the source is re-downloaded, the configure is re-run.
2. If the configure is re-run, it regenerates configuration files.
3. Regenerated configuration files cause re-builds when no source or
headers have actually changed.
4. changed files will be re-installed, if there's an install step.
5. This will trigger re-compile/re-link/re-install of dependent packages.

For a single package this might not be a big problem but when you have 35
packages, it gets to be tedious.

I'm currently using CMake 2.8.11.  I've been told that newer versions of
the ExternalProject module behave better with respect to this, but I've
yet to see any improvement.

--
Kent Williams norman-k-williams at uiowa.edu






________________________________
Notice: This UI Health Care e-mail (including attachments) is covered by the Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is confidential and may be legally privileged.  If you are not the intended recipient, you are hereby notified that any retention, dissemination, distribution, or copying of this communication is strictly prohibited.  Please reply to the sender that you have received the message in error, then delete it.  Thank you.
________________________________


More information about the CMake mailing list