c++怎么配置Conan包管理工具_c++ 跨平台依赖下载与CMake集成【指南】

发布时间 - 2025-12-31 00:00:00    点击率:
Conan安装后conan --version报command not found主因是PATH未生效:Windows需重启终端或手动加Scripts路径,macOS/Linux需将~/.local/bin加入shell配置并重载;用conanfile.txt声明依赖时需配置[requires]和[generators],运行conan install --build=missing生成CMake所需文件;find_package(fmt)失败因Conan生成CONFIG模式文件,须用find_package(fmt CONFIG REQUIRED)并确保CMAKE_PREFIX_PATH包含deps目录;跨平台构建卡住常因无匹配预编译包而触发本地编译,应优先查可用二进制、用--build=never或调整settings避免编译。

Conan 安装后为什么 conan --version 报 command not found?

多数情况是 PATH 没生效。Windows 上用 Chocolatey 或 Scoop 安装后需重启终端;macOS/Linux 用 pip 安装时,conan 可能落在 ~/.local/bin,而该路径未被 shell 加载。

  • 检查安装位置:python -m pip show conan → 看 LocationFiles
  • Linux/macOS:把 export PATH="$HOME/.local/bin:$PATH" 加进 ~/.bashrc~/.zshrc,再执行 source ~/.zshrc
  • Windows:确认安装时勾选了 “Add Conan to PATH”,否则手动把 C:\Users\{user}\AppData\Roaming\Python\PythonXX\Scripts 加入系统环境变量

如何用 conanfile.txt 声明依赖并生成 conanbuildinfo.cmake

这是最轻量的集成方式,适合已有 CMake 项目的快速接入。Conan 不接管构建,只负责下载 + 生成 CMake 可读的配置文件。

  • 在项目根目录建 conanfile.txt,内容示例:
[requires]
fmt/10.2.1
spdlog/1.13.0

[generators]
CMakeDeps
CMakeToolchain
  • 运行:conan install . --build=missing --settings compiler.cppstd=17
  • 注意:--build=missing 是关键,否则遇到预编译包不匹配(如 macOS M1 vs Intel)会直接报错退出
  • 生成的 conan_toolchain.cmakexxx-deps.cmake 文件默认输出到当前目录,CMake 需显式加载:cmake -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake ...

为什么 CMakeLists.txt 里 find_package(fmt) 找不到,但 find_package(fmt CONFIG) 可以?

因为 Conan 的 CMakeDeps 生成的是 CONFIG 模式文件(即 fmtConfig.cmake),它不走 CMake 默认的 FindXXX.cmake 路径搜索逻辑。

  • 必须用 find_package(fmt CONFIG REQUIRED),且确保 CMAKE_PREFIX_PATH 包含 Conan 生成的 deps 目录(通常由 conan_toolchain.cmake 自动注入)
  • 如果仍失败,检查 conan install 输出末尾是否提示 Generated xxx-config.cmake,没有说明 CMakeDeps 未生效或包本身不提供 cmake targets
  • 旧项目若坚持用 find_package(fmt),可临时加一层兼容:include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) + conan_basic_setup()(仅限 legacy conanbuildinfo.cmake 方式)

跨平台构建时 conan install 总卡在某个包的 build 阶段

根本原因是 Conan 默认按 host 设置(OS/arch/compiler)匹配预编译二进制,一旦官方仓库没提供对应组合(比如 Windows + clang + static CRT),就会 fallback 到本地编译——而很多 C++ 包(如 OpenSSL、Boost)在非标准环境下编译失败率极高。

  • 先查可用二进制:conan search fmt/10.2.1 -r conancenter,看输出中是否有匹配你 --settings 的行
  • 避免编译:加 --build=never 强制只用二进制;或指定更通用的 settings,例如把 compiler.runtimeMT 改成 MD(Windows 动态链接 CRT)
  • 真要编译:确保已安装对应工具链(如 MinGW 工具链需提前配好 CONAN_CMAKE_GENERATORCONAN_CMAKE_TOOLCHAIN_FILE

真正麻烦的从来不是“怎么让 Conan 下载”,而是“怎么让它别自己编译”。每个包的编译脚本质量参差不齐,尤其涉及汇编或平台特有 ABI 时,本地编译极易失败。建议优先锁定已验证的二进制版本,再通过 conan lock 固化依赖图。


# linux  # python  # windows  # app  # 工具  # ssl  # mac  # ai  # c++  # macos  # 环境变量  # win 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 个人网站制作流程图片大全,个人网站如何注销?  js代码实现下拉菜单【推荐】  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  免费视频制作网站,更新又快又好的免费电影网站?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Python高阶函数应用_函数作为参数说明【指导】  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  LinuxCD持续部署教程_自动发布与回滚机制  如何用西部建站助手快速创建专业网站?  清除minerd进程的简单方法  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  Linux系统命令中screen命令详解  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Python数据仓库与ETL构建实战_Airflow调度流程详解  Python图片处理进阶教程_Pillow滤镜与图像增强  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Laravel如何创建自定义Facades?(详细步骤)  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  焦点电影公司作品,电影焦点结局是什么?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  linux top下的 minerd 木马清除方法  5种Android数据存储方式汇总  智能起名网站制作软件有哪些,制作logo的软件?  Laravel怎么使用Intervention Image库处理图片上传和缩放  Laravel如何配置Horizon来管理队列?(安装和使用)  如何快速生成高效建站系统源代码?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  如何在阿里云购买域名并搭建网站?  详解jQuery停止动画——stop()方法的使用  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  佛山企业网站制作公司有哪些,沟通100网上服务官网?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  Laravel PHP版本要求一览_Laravel各版本环境要求对照  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Bootstrap CSS布局之列表  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  如何快速搭建高效简练网站?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  如何在云虚拟主机上快速搭建个人网站?  如何在搬瓦工VPS快速搭建网站?  网站建设整体流程解析,建站其实很容易!  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  长沙做网站要多少钱,长沙国安网络怎么样?  如何在建站主机中优化服务器配置?