c++ - 如何在 CMake 中使用外部库?

标签 c++ cmake

我的项目结构如下所示,我想使用 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/

相关文章:

c++ - XML 在 ListView 中没有改变

c++: ‘->’ 的无效类型参数

cmake find_path 没有按预期工作

c++ - 在 C++ 类中编写许多 void 方法,并跟踪变量变化

c++ - 如何在不重新编译 gcc 的情况下修改传递给 ld 的选项

c++ - 在 g++ 的 `= 0' token 错误之前无效的纯说明符(仅允许 ‘;’)

c++ - Boost_LIBRARIES 不包含 program_options

windows - (如何)我可以在 Windows 上执行单个 .cmake 文件吗?

qt - 如何更新 CMake Qt 项目中的 *.ts(用于 Qt Linguist)文件?

android - 在没有 Android Studio 的情况下为 Android 创建 (Cmake) C/C++ 库