Conan是C++主流跨平台依赖管理工具,核心流程为“配置→声明→构建→消费”:pip安装后配置国内源与profile;用conanfile.txt声明依赖并生成CMake配置;通过conan install下载并锁定依赖;最后在CMake中集成toolchain与find_package完成构建。
Conan 是 C++ 领域最主流的跨平台依赖管理工具,它不绑定构建系统,能和 CMake、Meson、Bazel 等无缝协作,也支持私有仓库和
二进制缓存。用好 Conan 的关键不是记命令,而是理解“配置 → 声明 → 构建 → 消费”这个闭环。
推荐用 pip 安装最新稳定版(避免系统包管理器的老旧版本):
pip install conan
首次运行 conan 会自动创建默认配置目录(~/.conan2)。建议马上配置国内加速源,避免被墙卡住:
推荐新手从 conanfile.txt 入手,轻量直观;工程成熟后可升级为 conanfile.py 获得完整逻辑控制能力。
示例 conanfile.txt:
[requires]
fmt/10.2.1
spdlog/1.13.0
[generators]
CMakeDeps
CMakeToolchain
[layout]
cmake_layout
说明:
进入项目根目录(含 conanfile.txt),执行:
conan install . --build=missing -o *:shared=True
关键参数解释:
修改你的 CMakeLists.txt,在 project() 之后、add_executable() 之前加入:
include(${CMAKE_BINARY_DIR}/conan_toolchain.cmake)
find_package(fmt CONFIG REQUIRED)
find_package(spdlog CONFIG REQUIRED)
然后在 target_link_libraries 中引用:
target_link_libraries(myapp PRIVATE fmt::fmt spdlog::spdlog)
最后正常构建:
mkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake
cmake --build .
基本上就这些。Conan 的核心价值在于把“找库、编译库、连头文件、设链接路径、处理 ABI 差异”这些脏活封装成可复现的自动化流程。初期多跑几遍 conan install 和 conan list 查看依赖树,比死记文档更有效。