[CMake] Superbuild subprojects and find_package()

Petr Kmoch petr.kmoch at gmail.com
Thu Apr 18 02:28:16 EDT 2013


Hi John,

the primary tool for superbuilds in CMake's arsenal is ExternalProject_Add
from module ExternalProject. I don't have much experience with it, but you
can read its docs to see if it could help you.

Petr


On Thu, Apr 18, 2013 at 5:38 AM, John Gallagher <
johnkgallagher+cmake at gmail.com> wrote:

> Hello all,
>
> Some Googling has led me to questions that have been asked that are
> similar to this one but I haven't seen a definitive answer. I'm trying to
> set up a CMake "superbuild" where there are dependencies between the
> subprojects, and some of the subprojects use find_package() to import
> targets from their dependencies (other subprojects, from the superbuild's
> point of view). For a stripped down example, suppose I have proj1 and
> proj2. proj1 can be built and installed on its own, and it writes out a
> Proj1Config.cmake file (with targets and such). proj2 uses
>
> find_package(Proj1 REQUIRED)
>
> to import those targets. So independent of a CMake superbuild, things work
> just fine if I configure, build, and install proj1, *then* configure,
> build, and install proj2. Is there a way to do this using a CMake
> superbuild? Some ideas (mostly gleaned from the aforementioned googling):
>
> 1. Use add_subdirectory() from the superproject. I think the REQUIRED on
> find_package() would fail though? In my case I can modify the subprojects,
> but I would like for them to continue to build correctly standalone (not
> inside the superbuild), as they really are separate projects. Is there a
> way to make add_subdirectory() work without exploding on find_package?
>
> 2. Don't use CMake for the "superbuild" - a shell script or plain Makefile
> could accomplish this pretty easily, but that seems a little hokey.
>
> 3. (This one is unclear.) Somehow build proj1 before configuring proj2,
> and point proj2 at proj1's build directory so it can find
> Proj1Config.cmake. This seems fragile at best (prefix, RPATH, etc issues).
>
> Appreciate any advice!
>
> John
>
> --
>
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20130418/f4712f74/attachment.htm>


More information about the CMake mailing list