c++ Conan怎么管理依赖 c++包管理器Conan入门【工具】
发布时间 - 2026-01-07 00:00:00 点击率:次Conan 是 C++ 跨平台包管理器,通过 conanfile 声明依赖、conan install 下载/构建/生成配置,并集成到 CMake 流程中实现自动化依赖管理。
Conan 是 C++ 领域主流的跨平台包管理器,它不依赖构建系统(CMake/Make/Ninja 等),但能和它们无缝协作。核心思路是:把第三方库(如 fmt、Boost、OpenSSL)打包成可复用、可版本化、可配置的二进制“包”,再通过 conanfile.py 或 conanfile.txt 声明依赖,由 Conan 自动下载、构建(必要时)、安装并注入到你的构建流程中。
初始化项目并声明依赖
在项目根目录创建 conanfile.txt(适合简单项目)或 conanfile.py(推荐,更灵活):
- conanfile.txt 示例:
[requires] fmt/10.2.1 zlib/1.3.1[generators] CMakeDeps CMakeToolchain
- conanfile.py 示例(功能更强):
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 - 添加自建 Artifactory 或 Nexus:
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.io/center 确认是否存在;也可用
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++ 项目依赖管理场景。
# linux
# windows
# 编码
# app
# 工具
# ssl
# ai
# c++
# win
# 配置文件
# 常见问题
# red
# include
# private
# default
# https
# 自动化
# 就能
# 管理器
# 自己的
# 多个
# 找不到
# 所需
# 更强
# 第三方
# 它不
# 你也可以
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
Laravel观察者模式如何使用_Laravel Model Observer配置
如何在Windows环境下新建FTP站点并设置权限?
jQuery 常见小例汇总
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
Laravel如何使用Collections进行数据处理?(实用方法示例)
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
Laravel怎么实现验证码(Captcha)功能
Laravel中的withCount方法怎么高效统计关联模型数量
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
,南京靠谱的征婚网站?
网易LOFTER官网链接 老福特网页版登录地址
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
详解Oracle修改字段类型方法总结
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
JavaScript模板引擎Template.js使用详解
如何在企业微信快速生成手机电脑官网?
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
实例解析angularjs的filter过滤器
如何在新浪SAE免费搭建个人博客?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Java解压缩zip - 解压缩多个文件或文件夹实例
Linux安全能力提升路径_长期防护思维说明【指导】
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
如何快速搭建个人网站并优化SEO?
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
nodejs redis 发布订阅机制封装实现方法及实例代码
Laravel如何与Pusher实现实时通信?(WebSocket示例)
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何用腾讯建站主机快速创建免费网站?
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
简单实现jsp分页
如何确保FTP站点访问权限与数据传输安全?
免费网站制作appp,免费制作app哪个平台好?
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
如何做网站制作流程,*游戏网站怎么搭建?
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
Laravel怎么调用外部API_Laravel Http Client客户端使用
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
制作企业网站建设方案,怎样建设一个公司网站?
Laravel如何使用Blade模板引擎?(完整语法和示例)
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
如何用美橙互联一键搭建多站合一网站?


有传递依赖版本,确保可重现构建