【CMake】在工程项目中嵌入其他CMake工程的几种方式

0.前言

在把一些辅助功能项目例如plog、googletest等的源码嵌入到当前的项目工程,有以下四种实现方式。以GoogleTest为例进行说明。

1.实现方法

  • 将GoogleTest源码下载到本地,从源码编译安装到指定路径,然后再使用静态或者动态链接的方式进行调用

    这是最不灵活的一种方法,它使得后续的持续集成很难进行。
    因为编译安装时可能依赖本地环境和系统配置等。
    并且不能在编译时与该模块最新版本进行同步。

  • 将GoogleTest源码直接复制到当前项目工程的源码目录结构中

    通常这是最简单的方法,但也是最难保持更新的方法。
    由于下载的源码是某个时间节点的固定版本,无法跟踪源码的修复和更新。

  • 将GoogleTest添加为当前项目工程的Git submodule

    这种方法并不总是可行,或者有些时候不适合这样做,因为Git子模块本身也有其优势及不足。

  • 将源码下载作为编译配置过程的一部分

    利用CMake语句file(DOWNLOAD <url> [<file>] [<options>...])来下载最新版本的GoogleTest模块。然后与项目工程进行集成编译使用。

    这种方法能够克服前面提到的三种方法的局限性。推荐使用该方法。

(全文完)


参考资料

[1] Generic Build Instructions

[2] CMake » latest release (3.22.1) Documentation » cmake-commands(7) » file

本文作者 :phillee
发表日期 :2022年01月24日
本文链接https://www.cnblogs.com/phillee/p/15839108.html
版权声明 :*转载-非商用-非衍生-保持署名(创意共享3.0许可协议/CC BY-NC-SA 3.0)。转载请注明出处!
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

感谢您的支持

¥ 打赏

【CMake】在工程项目中嵌入其他CMake工程的几种方式

微信支付

上一篇:CMake语法—函数(解析参数 PARSE_ARGV)


下一篇:在 CMake 项目中使用 protobuf