如何使用cmake自动构建第三方库

时间:2012-07-30 19:25:32

标签: cmake

我在寻找什么: 下载库 提取它 应用自定义补丁 运行configure 运行build命令 我正在尝试构建的库是:

  • Openssl
  • 升压
  • 节俭
  • C-顷
  • 卷曲
  • PCRE
  • Nginx的
  • ICU
  • JsonCPP

我想我可以使用外部模块执行这些操作:http://cmake.org/cmake/help/v2.8.8/cmake.html#module:ExternalProject

但我有以下问题?

  1. 我有不同类型的构建和不同的目录。是吗 要为每个不同的目标构建所有这些库吗?如是 所有这些图书馆需要一个小时才能建成,这将是痛苦的。是 有一种方法我可以控制它,它只构建一次。作为图书馆 所有这些目标保持不变。

  2. 将目录切换为其他名称。 Cmake强迫一切 重建。外部库是否相同?如是?如何 解决这个问题。如果不是,我不想重建图书馆 改变它们并希望在切换到不同时使用它们 没有建造它们的分支。

1 个答案:

答案 0 :(得分:2)

是的,您可以使用CMake的ExternalProject功能来完成您想要的任务。

将交叉编译与外部项目结合使用时,将为每个工具链构建一次源代码。如果您将构建结果签入源控制系统,并在每个新人的机器上重新检查它,您可以避免重建,但我不建议这样做。相反,让你的“设置新计算机”任务实际上允许编译在一夜之间运行,这也将作为机器实际可用的测试。该设置任务可由系统管理员在新员工到达之前启动,或者您可以根据情况将其留给新员工。

我不完全确定你在第二个问题中提出的问题,但是如果库没有改变,CMake会发现它没有改变,也没有重新编译它。通常,源代码将位于单个目录树中:每个编译版本将构建在不同的位置。因此,开发人员可以通过切换目录随时访问任何编译版本。这特别有用,因为它允许您通过NFS将这些目录挂载到嵌入式硬件等等。