[CMake] ExternalProjects: How do ExternalProject_add and ExternalProject_Add_Step interact?

kent williams nkwmailinglists at gmail.com
Fri Apr 23 11:44:35 EDT 2010


So... I have been working on my 'Holy Grail' CMakeLists.txt that
builds all prerequisites to my application as ExternalProjects, and
then builds my application (also as an External Project).

In getting it to work on OS X and Linux I ran into an issue:

If you build Tcl, and install it, it installs the shared libraries for
Tcl read-only.  So, if I try and use fixup_bundle (from
BundleUtilities) to make a standalone build with all shared libraries
it fails:

-- 82/204: copying '/scratch/kent/newbuild/BT-build/lib/libtk8.5.so'
CMake Error at /opt/cmake-2.9.20100421/share/cmake-2.9/Modules/BundleUtilities.cmake:431
(file):
  file RPATH_REMOVE could not remove RPATH from file:

    /scratch/kent/newbuild/BT-build/bin/libtk8.5.so

  Error opening file for update.
Call Stack (most recent call first):
  /opt/cmake-2.9.20100421/share/cmake-2.9/Modules/BundleUtilities.cmake:531
(copy_resolved_item_into_bundle)
  cmake_install.cmake:54 (fixup_bundle)

So my thought was 'brilliant! I'll add a step to the ExternalProject!'
-- but it isn't clear to me if ExternalProject_Add_Step is actually
set up to modify an External Project, or if you're supposed to use
ExternalProject_Add_Step commands to swizzle up your own custom
External Project.

More specifically If I have

ExternalProjectAdd(xyz
...
)

ExternalProject_Add_Step(xyz fix_permissions
...
)

I don't know what to put for DEPENDEES to get fix_permissions to run
AFTER the install.

Any ideas?


More information about the CMake mailing list