将一个cmake项目嵌入另一个项目中?

Tal*_*lin 28 cmake

我有两个项目,都使用CMake.现在我想将其中一个项目作为一个库包含在另一个项目中,同时仍然保持将它们编译为独立项目的能力.

到目前为止我所做的是:使用版本控制系统在父项目的子目录中克隆子项目的副本.我已经使用"add_subdirectory"将子项目的CMakeLists.txt包含到父项目中.我通过重命名子项目中的一些目标来修复目标之间的名称冲突.

但是,我遇到的一个问题是子项目中的各种配置测试似乎没有运行.例如,子项目使用FindThreads模块来确定可用的同步基元.父项目不知道线程问题,因此没有任何与此相关的测试.类似地,子项目对标题进行了各种测试,父项目不需要这些测试.这些测试似乎都没有运行,并且这些测试定义的符号没有添加到CMakeCache.txt文件中.

我真的不想将所有子项目的测试(主要处理与父项无关的平台特定问题)提升到父项目的CMakeLists.txt中.

cwi*_*ick 18

CMake 2.8添加了一个新的外部项目模块,它允许您创建一个自定义目标来驱动另一个CMake项目的构建.关于这方面的文档有点弱,但看起来它可能会做你想要的.

我认为这个想法是从你的父项目中调用ExternalProject_Add,将它指向子项目的源目录(你甚至可以让它为你检查SVN或CVS中的子项目,很好!).