我有一个cmake项目,它依赖于另一个库。其他库也使用cmake,但其构建步骤似乎更像是独立项目而不是库。因此,当我的cmake尝试add_subdirectory()
到库cmake时,我会收到错误,例如“CPack.cmake已被包含!!”并且找不到“CPack自述文件资源文件”。所以,除非有一些聪明的技巧,我假设add_subdirectory()在这里不是一个现实的选择?将图书馆建设整合到项目建设中的最佳选择是什么?
我想到的几个想法是:
使用自定义命令动态生成库的cmake构建文件,然后使用更多自定义命令启动构建。
只需手动构建库并使用我的项目存储预构建的二进制文件,以用于各种os / arch /编译器组合。
思想?
答案 0 :(得分:4)
您最好的选择是使用ExternalProject
模块 - 特别是ExternalProject_Add
功能。
这将允许您执行以下任何或所有操作:下载,更新/修补,配置,构建,安装和测试依赖库。它适用于任何构建系统,但显然特别适合与CMake项目一起使用。
如果你 正在考虑做你的选择1 - 可能更容易看到修改其他库的CMakeLists.txt以允许它被包含在你自己的项目中add_subdirectory
。