[cmake-developers] Severe behavioural change regressions in release branch

Ben Boeckel ben.boeckel at kitware.com
Mon Oct 27 17:22:45 EDT 2014


On Tue, Oct 28, 2014 at 09:58:58 +1300, Ben Cooksley wrote:
> If anyone is interested, help would be appreciated to get a Contracts
> style build up and running.
> In particular, pointers to documentation on how to perform such builds
> would be appreciated - we'll need to run "make install" for parts of
> it which doesn't seem to happen in any of the existing examples as far
> as I can see.

Since it's a CMake build, ExternalProject should make it fairly
straightforward. A quick sketch of the non-boilerplate code I see in the
current contracts tests:

    externalproject_add(kdelibs
      GIT_REPOSITORY [...]
      GIT_TAG        [...] # The oldest supported release.
      CMAKE_ARGS
        [...]
      INSTALL_DIR    "${CMAKE_CURRENT_BINARY_DIR}/install")
    externalproject_add(someotherkdelib
      DEPENDS        kdelibs
      GIT_REPOSITORY [...]
      GIT_TAG        [...] # The oldest supported release.
      CMAKE_ARGS
        # Might not be necessary.
        "-DCMAKE_MODULE_PATH={$CMAKE_CURRENT_BINARY_DIR}/install/lib/cmake"
        [...]
      INSTALL_DIR    "${CMAKE_CURRENT_BINARY_DIR}/install")

The rationale for using the oldest supported release is so that we make
sure whatever was written *then* still works today.

--Ben


More information about the cmake-developers mailing list