4

我在找什么:下载库提取它应用自定义补丁运行配置运行构建命令我要构建的库是:

  • OpenSSL
  • 促进
  • 节约
  • 战神
  • 卷曲
  • 聚合酶链反应
  • Nginx
  • 重症监护室
  • JsonCPP

我想我可以使用外部模块来做这些事情:http ://cmake.org/cmake/help/v2.8.8/cmake.html#module:ExternalProject

但我有以下问题?

  1. 我有不同类型的构建和不同的目录。它会为每个不同的目标构建所有这些库吗?如果是,那将是痛苦的,因为所有这些库都需要一个小时来构建。有没有办法我可以控制它并且它只构建一次。因为所有这些目标的库都保持不变。

  2. 将目录切换到不同的名称。Cmake 强制重建所有内容。外部库是否相同。如果是?如何解决这个问题呢。如果我不更改它们并且想要在切换到不同分支而不构建它们的同时使用它们,我不想重建库。

4

1 回答 1

2

是的,您可以使用 CMake 的 ExternalProject 功能来完成您想做的事情。

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

我不完全确定您在第二个问题中要问什么,但是如果库未更改,CMake 将检测到它未更改并且不会重新编译它。通常,源代码将位于单个目录树中:每个编译版本都将构建在不同的位置。因此,开发人员只需切换目录即可随时访问任何编译后的版本。这特别有用,因为它允许您通过 NFS 将这些目录挂载到嵌入式硬件等。

于 2013-11-02T01:12:34.170 回答