首页 > 解决方案 > 如何在 CMake 中使用外部库?

问题描述

我的项目结构看起来像这样,我想使用ext to inc文件夹上的库派生我的类,并在main.cpp上使用它们。CMakeLists.txt的骨架应该是什么样的?

.
├── CMakeLists.txt
├── ext
│   ├── abseil-cpp
│   └── SDL2-2.0.9
├── inc
├── src
└── main.cpp

标签: c++cmake

解决方案


如果您想将库构建为项目的一部分,是的,只要外部库是基于 Cmake 的,并且您为您的项目适当地修改了它们的 Cmake 文件,这将起作用。

但是,CMake 有一个名为ExternalProject旨在帮助您管理第三方依赖项的模块。你可以在这个网站上找到一篇相当详尽的文章。ExternalProject包含创建自定义目标以驱动外部项目的下载、更新/修补、配置、构建、安装和测试步骤所需的一切。

还有其他选择,我更喜欢使用预构建的库来减少构建时间。(运行时间越短,CI 服务的成本就越低)所以我越来越喜欢Conan,这是一个开源、去中心化和多平台的包管理器,最常用于 C++。它还具有出色的Cmake 集成,因此非常适合我的工作流程。


推荐阅读