0%

Conan 使用手册

  • Conan 是一个开源的、跨平台的、去中心化的 C++ 包管理器,旨在简化 C++ 项目的依赖管理和项目构建过程。
  • Conan 提供了一个集中式的包仓库,允许开发者轻松地查找、安装和管理第三方库和工具,通过它可以安装、解决构建依赖,更重要的是可以直接集成到 Build System 中使用。
  • 同时 Conan 也允许开发者搭建自己的私有仓库,供私有项目使用。
  • 本文记录了从零开始上手 Conan 的过程,帮助更多 C++ 开发者了解和上手这一现代化的包管理器,从依赖配置的苦海中解脱出来。

安装

1
2
3
4
5
6
apt update && apt install curl -y
curl -LsSf https://astral.sh/uv/install.sh | sh
uv python install cpython-3.14.3-linux-x86_64-gnu
uv tool install pip
uv tool install conan
conan --version

conan 需要 Python 环境的支持,这里通过 UV 安装了 conan 工具。

配置

conan 的配置文件有两种,一种是 conanfile.txt 文本文件,内容如下:

1
2
3
4
5
6
7
[requires]
nlohmann_json/3.11.3
sqlite3/3.48.0

[generators]
CMakeDeps
CMakeToolchain

这个配置文件中[requires] 部分用来配置我们需要的第三方库,比如指定版本的 nlohmann_json 和 sqlite3。 [generators] 部分用来配置生成器,目的是为了让 conan 能够生成对应构建系统(CMake、Meson、Ninja 等)需要的依赖文件。

另一种是名为 conanfile.py 的 python 脚本文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
from conan import ConanFile

class MyProjectConan(ConanFile):
name = "mytestproj"
version = "0.1"
settings = "compiler", "build_type", "arch"
generators = "CMakeDeps", "CMakeToolchain"

def requirements(self):
self.requires("nlohmann_json/3.11.3")
self.requires("sqlite3/3.48.0", options={"shared": True})

我们用这个脚本文件可以结合 python 代码获得更灵活的能力,比如在 requirements 方法中我们可以根据不同的编译器、平台等条件来选择不同版本的库,或者设置不同的编译选项等。

这两种配置文件是互斥的,只能选择一种!

如果只是比较轻量级使用,可以用 conanfile.txt 配置文件,否则一般用 conanfile.py 脚本文件,以获得最大自由度。

参考