我的项目结构如下所示,我想使用 ext 上的库派生我的类到 inc 文件夹并在 main.cpp 上使用它们。 CMakeLists.txt 的骨架应该是什么样的?
.
├── CMakeLists.txt
├── ext
│ ├── abseil-cpp
│ └── SDL2-2.0.9
├── inc
├── src
└── main.cpp
最佳答案
如果您想将库构建为项目的一部分,是的,只要外部库是基于 Cmake 的并且您为您的项目适本地修改它们的 Cmake 文件,这就可以工作。
但是,CMake 有一个名为 ExternalProject
的模块旨在帮助您管理第三方依赖项。您可以找到关于它的非常详尽的文章 at this website . ExternalProject
包含创建自定义目标所需的一切,以驱动外部项目的下载、更新/补丁、配置、构建、安装和测试步骤。
还有其他选项,我更喜欢使用预构建的库来减少构建时间。 (CI 服务运行时间越短,成本越低)所以我越来越喜欢 Conan ,一个开源的、去中心化的和多平台的 最常用于 C++ 的包管理器。它也有很棒的 Cmake integration所以它非常适合我的工作流程。
关于c++ - 如何在 CMake 中使用外部库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53973109/