31

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

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

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

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

4

1 回答 1

19

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

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

于 2009-11-25T11:32:33.417 回答