c++ - 如何在 CMake 中使用外部库?
问题描述
我的项目结构看起来像这样,我想使用ext to inc文件夹上的库派生我的类,并在main.cpp上使用它们。CMakeLists.txt的骨架应该是什么样的?
.
├── CMakeLists.txt
├── ext
│ ├── abseil-cpp
│ └── SDL2-2.0.9
├── inc
├── src
└── main.cpp
解决方案
如果您想将库构建为项目的一部分,是的,只要外部库是基于 Cmake 的,并且您为您的项目适当地修改了它们的 Cmake 文件,这将起作用。
但是,CMake 有一个名为ExternalProject
旨在帮助您管理第三方依赖项的模块。你可以在这个网站上找到一篇相当详尽的文章。ExternalProject
包含创建自定义目标以驱动外部项目的下载、更新/修补、配置、构建、安装和测试步骤所需的一切。
还有其他选择,我更喜欢使用预构建的库来减少构建时间。(运行时间越短,CI 服务的成本就越低)所以我越来越喜欢Conan,这是一个开源、去中心化和多平台的包管理器,最常用于 C++。它还具有出色的Cmake 集成,因此非常适合我的工作流程。
推荐阅读
- three.js - 如何在three.js中围绕对象的中心旋转?
- c++ - google or-tools glop:如何创建指向 const 对象的指针数组?
- r - 在R中将箱线图与直方图组合/叠加
- .htaccess - 无法使用.htaccess 重定向路径?
- python - 合并两个字典并在 Python 中保留重复键的值
- mysql - 需要值为 UserID 或 NULL 的所有 MySQL 结果 - 没有额外的 UserID
- sql - 大型记录集的复杂 SQL 查询
- python - Seq2Seq 模型学会在几次迭代后只输出 EOS 令牌 (<\s>)
- javascript - editableSelect() 在 ajax 方法之后不会触发
- xamarin.forms - Xamarin.Forms:如何在 iOS 设备上隐藏导航栏分隔符?