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

我在找什么:

下载库

提取它

应用自定义补丁

运行configure

运行build命令

我想要构建的库是:

> Openssl
>提升
>节俭
> C-ares
>卷曲
> Pcre
> Nginx
> ICU
> JsonCPP

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

但我有以下问题吗?

>我有不同类型的构建和不同的目录.是吗
要为每个不同的目标构建所有这些库吗?如是
所有这些图书馆需要一个小时才能建成,这将是痛苦的.是
有一种方法我可以控制它,它只构建一次.作为图书馆
对所有这些目标保持不变.
>在将目录切换到其他名称时. Cmake强迫一切
重建.外部库是否相同?如是?如何
解决这个问题.如果不是,我不想重建图书馆
改变它们并希望在切换到不同时使用它们
没有建造它们的分支.

最佳答案 是的,您可以使用CMake的ExternalProject功能来完成您想要的任务.

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

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

点赞