gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:53:48 24 4
gpt4 key购买 nike

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

问题范围

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

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

  • 很高兴有东西:
  • 依赖项会自动下载,因此新开发人员开始编码的步骤更少;
  • 以 IDE(如 CLion)可以自动完成的方式配置依赖项(无需完成额外的配置步骤)。

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

  • 引用
  • [1] https://github.com/tegoo/cmake-dfetch
  • [2] https://stackoverflow.com/users/1938798/craig-scott
  • [3] CMake + GoogleTest
  • 最佳答案

    您的 PoC 可能有效,但 CMake 内置了 solution用于在配置步骤中获取外部项目。如果这不能满足您的要求,例如基于非 CMake 的依赖项,您可以查看 Conan .

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

    关于c++ - 如何将外部依赖项引入跨平台 CMake 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59695661/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com