繁体   English   中英

如何将外部依赖引入跨平台 CMake 项目?

[英]How to bring external dependencies into cross-platform CMake project?

将外部依赖项引入跨平台 CMake 项目的最佳方法是什么? 请参阅下面我看到的问题范围和解决方案。

问题范围

假设我们有一个具有以下约束的 C/C++ 项目:

  • CMake 是构建系统;
  • 必须针对不同平台(桌面、Android NDK / Yocto SDK、iOS)构建;
  • 具有使用 CMake 构建的外部依赖项(例如 Google Test);
  • 具有外部非基于 CMake 的依赖项(例如 SQLite 合并、Boost);
  • 并非所有依赖项都有 Git 上游(例如 SQLite 保存在化石中)。

很高兴有东西:

  • 依赖会自动下载,让新开发者开始编码的步骤更少;
  • 依赖项的配置方式使 IDE(如 CLion)可以自动完成(无需执行额外的配置步骤)。

可能的解决方案

  • Git 子模块(不清楚如何处理非基于 Cmake 且未保留在 Git 依赖项中的);
  • Google Repo 工具(与之前的问题相同);
  • CMake ExternalProject(在生成阶段下载、解压并可能修补 CMakeLists.txt 并使用 add_subdirectory 包含到项目中)。 我根据 [3] 中 Craig Scott 的 [2] 回答创建了一个 PoC[1]。

参考

您的 PoC 可能有效,但 CMake 有一个内置解决方案,用于在配置步骤期间获取外部项目。 如果这不能满足您的要求,例如非基于 CMake 的依赖项,您可以查看Conan

https://blog.conan.io/2018/06/11/Transparent-CMake-Integration.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM