我想要实现的是一步构建 具有依赖项的整个项目(例如Slicer)。当我 了解,在复杂的CMake项目中,通常的做法是通过以下方式进行构建:
1 $ cmake ..
它将包括使用ExternalProject_add
指定的所有直接依赖项,但是由于它们最初并未安装,因此将没有<DependencyName>Config.cmake
文件,因此它将无法在以下位置正确配置主项目文件这次。
2 $ make
此构建将仅构建依赖项。 构建主项目文件将失败,因为CMake无法执行findPackage(<DependencyName>)
。
3 $ cmake ..
由于已安装所有直接依赖项,因此CMake能够正确配置主项目文件,并...
4 $ make
...成功。
在我的组织中,我被告知,这就是CMake的工作方式,并且没有办法解决,除了肮脏的骇客,例如在主项目中缓存<DependencyName>Config.cmake
或完全不使用ExternalProjects。但是我遇到了一个用于CMake的Artichoke库和一个Slicer项目,该项目使用该库一步一步地构建了至少二十个依赖关系,其中一些依赖关系深于一个层次。
我仍然不完全了解朝鲜蓟的工作原理-(朝鲜蓟的文档对我没有多大帮助),但至少它启发了我再次审视这个问题。