<div dir="ltr">Hello all,<div><br></div><div style>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</div>
<div style><br></div><div style>find_package(Proj1 REQUIRED)</div><div style><br></div><div style>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):</div>
<div style><br></div><div style>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?</div>
<div style><br></div><div style>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.</div><div style><br></div><div style>
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).</div><div style>
<br></div><div style>Appreciate any advice!</div><div style><br></div><div style>John</div></div>