

新闻资讯
技术学院Conan 是 C++ 跨平台包管理器,通过 conanfile 声明依赖、conan install 下载/构建/生成配置,并集成到 CMake 流程中实现自动化依赖管理。
Conan 是 C++ 领域主流的跨平台包管理器,它不依赖构建系统(CMake/Make/Ninja 等),但能和它们无缝协作。核心思路是:把第三方库(如 fmt、Boost、OpenSSL)打包成可复用、可版本化、可配置的二进制“包”,再通过 conanfile.py 或 conanfile.txt 声明依赖,由 Conan 自动下载、构建(必要时)、安装并注入到你的构建流程中。
在项目根目录创建 conanfile.txt(适合简单项目)或 conanfile.py(推荐,更灵活):
[requires] fmt/10.2.1 zlib/1.3.1[generators] CMakeDeps CMakeToolchain
from conan import ConanFile from conan.tools.cmake import CMakeDeps, CMakeToolchainclass MyApp(ConanFile): settings = "os", "arch", "compiler", "build_type" requires = "fmt/10.2.1", "zlib/1.3.1"
def generate(self): tc = CMakeToolchain(self) tc.generate() deps = CMakeDeps(self) deps.generate()
运行
conan install . --build=missing即可拉取依赖并生成 CMake 所需的配置文件(conan_toolchain.cmake、fmt-release-x86_64-data.cmake等)。集成到 CMake 构建流程
修改你的
CMakeLists.txt,让 CMake 加载 Conan 生成的配置:
project() 之前加入:cmake_minimum_required(VERSION 3.23)(推荐 3.23+,兼容 Conan 2.x 的 generator)project() 之后添加:include(${CMAKE_BINARY_DIR}/conan_toolchain.cmake)
find_package(fmt CONFIG REQUIRED) 查找依赖,再 target_link_libraries(myapp PRIVATE fmt::fmt)
这样 CMake 就能自动找到头文件路径、链接库、编译定义等,无需手动写 include_directories() 或硬编码路径。
Conan 默认从 ConanCenter(官方免费仓库)拉取包。你也可以添加其他远程源:
conan remote list
conan remote add my-remote https://my-server.com/v1
conan create . --name=mylib --version=1.0(先本地测试),再 conan upload mylib/1.0 -r=my-remote --force
私有项目建议配置 conan remote add --force conancenter https://center.conan.io 显式启用官方源,并用 conan profile 管理不同环境(如 Windows MSVC / Linux GCC)的设置。
conan search "fmt*" -r conancenter 搜索conan profile show default 查看默认 profile,用 conan profile update 调整 settings.compiler.version 等字段--build=missing(仅缺时构建)或 --build=* (全部源码构建)conan lock 生成 conan.lock 文件,锁定所有传递依赖版本,确保可重现构建Conan 的本质是“声明式依赖 + 自动生成构建上下文”,掌握 conan install、conanfile 和 CMake 集成这三点,就能覆盖绝大多数 C++ 项目依赖管理场景。