[CMake] Trying to set up a "superbuild" with external project and install it...
Alexander Neundorf
a.neundorf-work at gmx.net
Wed May 11 15:07:45 EDT 2011
Hi,
I'd like to set up a kind of meta super project, which builds a bunch of
subprojects, which contains executable and shared libraries.
These subprojects come from different repositories, mostly git repositories.
AFAIK I can basically do this using the ExternalProject_add() feature of
cmake, it will get the sources, configure and build them.
So far so good.
Now, what do I do with installing ?
Usually the external projects are installed at the end of their build step at
make-time, and usually somewhere in the build tree.
But finally I'd like to have these projects installed into a proper system-
wide directory.
If I simply do install(DIRECTORY ... ) in the "superproject", stuff which
depends on CMAKE_INSTALL_PREFIX, like e.g. RPATH will be wrong after the final
install step (since the RPATHs will still point to the install locations in
the build tree).
If I put the final install location as install location in the
ExternalProject_Add() call, I will have to build with permissions to install
into the final install directory, which is generally not the case. E.g. to
install in /opt/ I would basically have to build as root (or change the
permissions of /opt/, but that's not possible on a standard system).
I could maybe also setuid cmake root (ugly too).
Always set a relative RPATH always using $ORIGIN ?
(but this will be kind of hard to enforce)
Any other ideas ?
Am I missing something ?
Any ideas how support for this could be added in a clean way ?
Alex
More information about the CMake
mailing list