【发布时间】:2014-05-04 19:29:04
【问题描述】:
我正在处理一个更大的项目,我们正在考虑如何组织大型构建。我认为应该/可以使用 cmake 来完成,但目前我不知道如何满足我们的所有要求。
这是我们的项目组织的样子:
- 项目由多个子项目(称为构建模块)组成
- 每个构建模块都可以由多个部分组成,这些部分创建静态或动态库、可执行文件或测试
- 构建模块可能依赖于其他构建模块的公共接口
- 为了快速构建,每个构建模块都应该构建在单独的 CI 服务器上。依赖项不应该每次都构建,而是从某个二进制存储库中获取(我们在这里考虑的是 nuget,但最简单的解决方案可能是网络共享)
考虑到 cmake,我正在考虑这样的目录结构
- Root directory
- Build Module 1
- Build Module 1 Static Lib
- Build Module 1 Unit Test
- Build Module 1 Public Interface
- Build Module 2
- ...
- Build Module n
这里的第一个问题:从哪里开始放置 CMakeLists.txt 文件?我将从构建模块级别开始,而不是从根目录开始。这样,如果开发人员只想构建模块 3、4 和 5,则可以创建自定义模块。
第二个:如何处理部署/查找包。理想情况下,依赖项的查找机制将允许创建从源代码构建的构建以及仅从源获取依赖二进制文件的构建。我希望这可以使用 find_package 和 xxxConfig.cmake / FindXXX.cmake 以某种方式完成。有人能告诉我怎么做吗?如何创建这些文件?如何使用 cmake 创建合适的部署?
第三个问题:有人知道我们如何将 nuget 集成到这个过程中吗?这可以作为 cpack 生成器完成吗?已经有了吗? cpack 能否替代 nuget(意味着它可以从某个远程位置获取二进制文件并在构建过程中安装它们)?
谢谢。 托比亚斯
【问题讨论】: