【开源分享】Conan:C/C++开发者的包管理神器

conan-c++包管理工具安装及使用指南 本篇文章的代码都在这里备份 文章目录一、conan介绍1.1 简单介绍1.2 conna特点1.3 跨平台二、conan全平台安装三、使用conan教程四、快速总结conan 一、conan介绍 跨平台 c、c++包管理工具 python写的 开源 类似java的maven,python的pip 1.1 简单介绍 Conan是C和C ++语言的依赖项和程序包管理器。它是免费和开源的,并且可以在所有平台上使用:Windows,Linux,OSX,FreeBSD,Solaris等,并且可以用于开发所有目 阅读详情
AI摘要

本文介绍了专为C/C++设计的开源包管理器Conan。它能解决C++生态的依赖管理难题,具有依赖管理自动化、精确版本控制、跨平台一致性等优势。文中给出实际项目应用示例,详解六大核心优势,还对比适用场景、提醒常见误区,并列举企业级应用案例和学习资源。

请添加图片描述


一、现实中的依赖地狱

想象你正在开发一个C++项目,需要用到Boost库。当你兴冲冲地写好#include <boost/filesystem.hpp>后,编译器却提示:

fatal error: 'boost/filesystem.hpp' file not found

接下来你发现:
• 同事用Homebrew安装了Boost 1.76

• 测试服务器用apt-get装了Boost 1.65

• 新同事的Mac需要手动编译安装

• 项目同时依赖OpenCV和Eigen3

这时就会陷入经典的依赖地狱:

项目依赖树:
YourProject
├─ Boost 1.76 (需要C++17)
├─ OpenCV 4.5 (需要Python 3.8)
└─ Eigen3 3.4 (需要CMake 3.18)

二、Conan是什么?

Conan是专为C/C++设计的开源包管理器,就像Python的pip或Node.js的npm,但专门解决C++生态的依赖管理难题。

核心功能:

  1. 依赖管理:自动下载、编译第三方库
  2. 版本控制:支持语义化版本(SemVer)
  3. 跨平台构建:Windows/macOS/Linux通用
  4. 构建配置:通过profile管理编译器参数
  5. 私有仓库:支持企业私有库搭建

三、Conan的核心优势

1️⃣ 依赖管理自动化
传统方式 vs Conan方式:

# 传统方式(噩梦模式)
wget https://boostorg.jfrog.io/.../boost_1_76_0.tar.gz
tar -xzf boost_1_76_0.tar.gz
cd boost_1_76_0
./bootstrap.sh --with-python=3.8
./b2 install

# Conan方式(优雅模式)
conan install boost/1.76.0@ --build=missing

2️⃣ 精确的版本控制
conanfile.txt示例:

[requires]
boost/1.76.0
openssl/1.1.1k

[generators]
cmake_find_package

3️⃣ 跨平台一致性
同一份conanfile.txt可以:
• 在Windows上自动下载MSVC版本

• 在macOS使用Clang编译

• 在Linux使用GCC构建


4️⃣ 构建配置隔离
通过profile文件管理不同环境:

# profile_linux_gcc.txt
os=Linux
compiler=gcc
compiler.version=9
compiler.cppstd=17

四、实际项目应用示例

🚩1. 安装Conan

pip install conan

🚩2. 创建项目结构

myproject/
├── conanfile.txt
└── src/
    └── main.cpp

🚩3. 编写conanfile.txt

[requires]
fmt/8.0.1
spdlog/1.8.5

[generators]
cmake_find_package

🚩4. 安装依赖

mkdir build && cd build
conan install .. --build=missing

🚩5. CMake构建

cmake_minimum_required(VERSION 3.15)
project(myproject)

find_package(fmt REQUIRED)
find_package(spdlog REQUIRED)

add_executable(main src/main.cpp)
target_link_libraries(main PRIVATE fmt::fmt spdlog::spdlog)

五、六大核心优势详解

🚩优势1:依赖隔离

每个项目独立管理依赖版本,避免"全局安装导致版本冲突"

🚩优势2:构建可重复性

通过conan.lock锁定依赖树:

{
  "boost/1.76.0": {
    "options": {"shared": true},
    "build_requires": ["python/3.8"]
  }
}

🚩优势3:构建加速

并行下载+缓存机制:

Downloading: libcurl/7.79.1 (12.3MB/s)
Using cached zlib/1.2.11 from local cache

🚩优势4:多编译器支持

自动处理不同编译器的差异:

# conanfile.py
def build(self):
    if self.settings.compiler == "gcc":
        self.run("mkdir build && cd build && cmake ..")
    elif self.settings.compiler == "msvc":
        self.run("cmake .. -G \"Visual Studio 16 2019\"")

🚩优势5:企业级私有仓库

搭建私有Artifactory:

[remotes]
artifactory = https://pkg.jfrog.io/artifactory/api/conan/conan-center
private-repo = https://internal.jfrog.io/artifactory/api/conan/private-repo

🚩优势6:灵活的构建模式

支持头文件库、编译库、预编译二进制等多种形式:

# 头文件库示例
zlib/1.2.11: header_only=True

六、适用场景对比

场景Conan方案传统方式
团队协作项目✅ 依赖版本统一管理❌ 各自安装不同版本
跨平台开发✅ 自动适配不同编译器❌ 手动处理平台差异
持续集成(CI)✅ 缓存加速构建❌ 每次全量编译
开源项目贡献✅ 方便贡献者复现环境❌ 贡献者配置环境困难
旧系统维护❌ 需要兼容老编译器✅ 直接使用系统库

七、常见误区提醒

❌ 误区1:Conan只能用于新项目
✅ 事实:通过--build=missing可以兼容旧代码

❌ 误区2:Conan会拖慢构建速度
✅ 事实:二进制缓存机制比重复编译快3-5倍

❌ 误区3:Conan只适合大型项目
✅ 事实:中小型项目更能体现其价值(避免环境配置问题)


八、企业级应用案例

  1. Autodesk Maya:管理200+第三方库依赖
  2. Qt Framework:官方推荐包管理方案
  3. NASA JPL:跨平台航天软件构建
  4. Siemens MindSphere:IoT云平台依赖管理

九、学习资源导航

  1. 官方文档:https://docs.conan.io
  2. 交互教程:https://learn.conan.io
  3. 中文社区:https://conan.io/zh/
  4. 视频教程:Conan官方YouTube频道

掌握Conan,就像给C++项目装上了"依赖时光机"。无论是个人开发者还是团队,都能显著提升构建可靠性、降低环境配置成本。下次遇到"在我机器上能跑"的魔咒,不妨试试这个现代C++开发的必备工具!

C++包Conan的使用方法 C++包管理器conan的使用方法 阅读详情

相关推荐

【conan】c++包管理工具,conan教程

1.X 和 2.X 区别挺大的,2.X 更强了,这篇文章就是我学习2.X 的学习记录,耐心跟官网的教程走一遍,基本就会用这个工具了。

q742971636的博客 1998

【小沐学C++】C/C++包管理工具Conan使用(C++、Python、CMake、Conan)

Conan是C和C++语言的依赖项和包管理器。它是免费和开源的,适用于所有平台(Windows、Linux、OSX、FreeBSD、Solaris等),可用于开发所有目标,包括嵌入式、移动(iOS、Android)和裸机。它还集成了所有构建系统,如CMake、Visual Studio(MSBuild)、Makefiles、SCons等,包括专有系统。Conan仓库地址Conan源码地址Conan帮助文档Conan是一个具有客户端-服务器架构的去中心化包管理器。

爱看书的小沐 3912

基于Dev Containers构建标准化C/C++开发环境:从Dockerfile到VSCode调试全流程

在软件开发中,环境配置不一致是导致“在我机器上能跑”问题的常见根源,尤其对于C/C++这类系统级编程语言。容器化技术通过将运行时环境与应用程序打包,实现了环境隔离与一致性,其核心原理是利用操作系统级虚拟化提供独立的文件系统、网络和进程空间。这一技术为开发工作流带来了革命性价值,使得开发、测试、部署环境能够高度统一,极大提升了团队协作效率和项目可复现性。在工程实践中,结合VSCode的Dev Containers扩展,开发者可以快速构建包含完整工具链(如GCC、GDB、CMake)的标准化开发环境,并通过预构

weixin_33743703的博客 522

Conan安装与C++第三方环境配置保姆级图文教程(附速查字典)

Conan是一个开源的C/C++包管理器,用于管理和构建C/C++项目所需的依赖库。本文介绍Conan的安装、常见操作,并给出一个实际案例加深理解

FRIGIDWINTER的博客 1万+

Windows C++开发环境高效配置指南:MSVC与MinGW双路径实践

C++作为高性能系统编程的核心语言,其开发效率高度依赖于本地工具链的配置。理解编译器、构建系统和包管理器的工作原理,是搭建高效开发环境的基础。通过合理组合这些工具,开发者可以构建出既能满足项目特定需求,又能提升编码体验的个性化工作流。在Windows平台上,这一过程尤为关键,因为其原生环境与常见的类Unix开发模式存在差异。本文聚焦于C++环境配置中的两个核心方案:一是基于微软原生MSVC编译器与VS Code编辑器的轻量高性能组合,特别适合Windows原生应用与游戏开发;二是利用MSYS2提供类Unix

weixin_34082854的博客 428

自动驾驶C++开发实战:从现代C++到ROS2/Cyber RT的工程能力构建

在追求极致实时性、可靠性与资源效率的嵌入式系统领域,C++凭借其零成本抽象、手动内存管理及对硬件的直接掌控能力,成为构建系统骨架的核心语言。其原理在于通过智能指针、移动语义等现代特性,在保障内存安全的同时实现高性能计算,这对于处理毫秒级延迟要求的任务至关重要。该技术的核心价值在于为自动驾驶、机器人等复杂系统提供了稳定、高效的基础运行环境。在自动驾驶这一典型应用场景中,C++工程师需要精通现代C++、Linux系统编程,并深入掌握如ROS 2或Apollo Cyber RT等基于发布-订阅模型的领域框架,以应

weixin_30475039的博客 386

基于 FFmpeg 的跨平台视频播放器简明教程(一):FFmpeg + Conan 环境集成

FFmpeg是一个极为著名的开源框架,几乎是所有从事音视频领域的人必备的工具,可以说没有比它更重要的了。然而,在网络上关于FFmpeg的教程中,我发现对于新手来说,这些教程或多或少都不太友好,存在以下问题:过于偏向API讲解:这些教程主要关注FFmpeg的API使用,而对于新手来说,这部分知识可能过于超前,难以理解。API接口过时:当前FFmpeg已经发布了6.0版本,但很多教程仍然在使用3.x版本的API,其中许多接口已经被弃用。然而,教程中的示例代码并未进行更新,给新手带来了困惑。

记录学习的过程 3288

C++工业级开发九重修炼:从现代语法到系统架构实战

C++作为一门接近系统底层的编程语言,其核心价值在于提供零成本抽象和对硬件的直接掌控力,从而实现无与伦比的运行时性能。其原理建立在资源获取即初始化的RAII哲学之上,通过智能指针、移动语义等机制,将资源生命周期与对象生命周期绑定,确保了异常安全和内存安全。这种精细的控制能力,使其在需要极致性能与稳定性的技术领域具有不可替代的价值,广泛应用于游戏引擎、高频交易系统、嵌入式设备和大型分布式后台等场景。现代C++标准引入了模块、协程、概念等新特性,持续演进着开发范式,而像CMake这样的现代构建系统和vcpkg等

lvwenwen 475

C++开源项目学习指南:从基础到进阶的实战路径

在软件工程领域,学习优秀开源项目是提升编程能力和工程思维的重要途径。其核心原理在于通过研究经过大规模实践检验的代码库,深入理解高性能、高并发、内存管理等关键技术概念的设计与实现。从技术价值看,这不仅能帮助开发者掌握现代编程语言特性(如C++11/14/17/20)的实际应用,更能学习到模块化设计、构建系统、测试框架等工程实践。在应用场景上,无论是构建网络服务、数据库系统、图形引擎还是开发工具链,都有对应的顶尖开源项目可供参考。本文聚焦于C++生态,针对不同学习阶段,系统梳理了包括Folly、RocksDB等

cucanqi9387的博客 460

C++项目实战入门:从语法到实战的完整学习路径与项目解析

C++作为一门核心的系统级编程语言,其学习路径常面临从语法掌握到项目实践的断层。理解C++的核心概念,如面向对象编程、内存管理和模板元编程,是构建扎实基础的起点。这些原理支撑着高性能应用的开发,尤其在系统编程、游戏引擎和基础设施软件中价值显著。在实际工程中,通过实现智能指针、网络服务器等具体项目,开发者能深入理解资源生命周期、并发模型等关键技术。本文聚焦于C++项目实战,提供从控制台应用到网络服务的分类指南,并解析了TinyWebServer等热门项目的核心架构与避坑要点,帮助学习者跨越理论与实践的鸿沟,构

weixin_30883311的博客 421

C++怎么学?零基础也可以,一份完整学习路线图助你搞定!

提供一条清晰、系统且实践导向的C++学习路径。从基础语法、面向对象、泛型编程、异常处理,逐步深入STL、智能指针、并发编程等现代C++高级特性。无论是新手还是希望提升,通过系统学习与项目实践,助您将理论知识转化为实际解决问题的能力。

Lion_Long的博客 4022

C/C++ Debug与Release混用:内存炸弹的成因与系统解决方案

在C/C++开发中,内存管理是程序稳定性的基石,其核心依赖于C运行时库(CRT)对堆内存的分配与释放。不同编译模式(如Debug与Release)链接了不同实现的CRT,导致内存管理器在调试填充、边界检查等方面存在根本差异。这种不一致性会破坏堆的内部数据结构,引发难以追踪的“堆损坏”问题,其技术价值在于揭示了模块化开发中二进制接口兼容性的深层挑战。在实际应用场景中,当主程序与第三方库或不同项目模块采用混合编译模式时,极易触发此类隐蔽崩溃。本文聚焦于**编译模式不一致**这一经典陷阱,通过剖析**CRT库分裂

weixin_33858485的博客 341

汇编语言(第4版)王爽 课程设计2 详细实现(一、虚拟模式DOS运行篇)

由于虚拟模式的限制,我们编写的许多逻辑暂时不能被检验,而因为《汇编语言》编写时间较早,其所依赖的运行环境如今只能够依靠虚拟机来搭建。比如实模式DOS,搭建步骤比较繁琐,因此我将其它的部分放在下一篇文章中进行讲解。事实上,我们实现的程序属于《汇编语言》课程设计2中任务程序部分,其中的完整任务还涉及到将该任务程序安装到软盘等操作,这些也都需要在实模式下才能运行,所以统一放到下一篇文章进行实现。

m0_73327328的博客 2823

基于C++20的Overload引擎:现代游戏引擎架构与模块化设计解析

游戏引擎作为游戏开发的核心框架,其架构设计直接决定了项目的可维护性、性能与扩展性。现代游戏引擎普遍采用模块化设计思想,通过解耦核心系统来提升代码复用与团队协作效率。在技术实现层面,基于组件的实体系统(ECS)通过数据与行为分离,优化了内存访问模式,显著提升了CPU缓存命中率与并行计算潜力。渲染管线作为引擎最复杂的部分,其抽象层设计允许开发者灵活切换底层图形API(如OpenGL与Vulkan),而基于物理的渲染(PBR)流程则能实现更逼真的光照与材质表现。这些技术共同服务于一个核心价值:为开发者提供高性能、

weixin_33695082的博客 362

第二章 零差云控关节模组内部构造

对零差云控的eRob70I进行了拆解

SFY__优快云的博客 5964

Field _II 仿真 学习笔记

参考Field II的使用说明,进行了四个例子的练习。仿真程序和结果如下: PURPOSE1:Calculate the received response from all elements of a linear array and plot the responses and the summed response 【计算来自所有线性阵元的接收响应,并绘制该响应以及叠加响应。】 >>

qq_34018578的博客 1万+

Visual Studio 2022深度解析:从C/C++到C#的编译原理与高效配置实战

集成开发环境(IDE)是现代软件开发的枢纽,它通过整合编辑器、编译器、调试器等工具,将源代码转化为可执行程序。其核心原理在于构建系统与工具链的协同工作:编译器将高级语言翻译为中间或机器码,链接器解析依赖并生成最终产物。这一过程的技术价值在于显著提升开发效率、确保代码质量,并降低跨平台与多语言开发的复杂度。在应用场景上,IDE广泛应用于桌面应用、Web服务、移动开发及系统编程等领域。本文聚焦于Visual Studio 2022这一主流工具,深入剖析其安装时的工作负载选择(如C++桌面开发与.NET SDK)

weixin_30520015的博客 363

iTunes登录协议逆向与自动化实现

本文详细解析了iTunes登录协议的逆向工程与自动化实现方法,涵盖请求体构造、签名生成和会话管理等关键技术。通过XML结构解析、X-Apple-ActionSignature生成原理及完整登录流程实现,帮助开发者高效完成iTunes自动化登录,提升工作效率。

weixin_26938645的博客 939

C++高频交易项目预备指南:从环境搭建到币安API集成与性能优化

高频交易(HFT)系统是金融科技领域的核心,其本质在于通过极低延迟的自动化交易捕捉市场微小价差。这类系统的技术基石在于对硬件资源的极致控制与高效的事件处理机制,通常采用C++等系统级语言来实现纳秒级的性能优势。其技术价值体现在通过精细的内存管理、缓存优化和无锁并发设计,将网络延迟与数据处理开销降至最低,从而在激烈的市场竞争中建立技术壁垒。典型的应用场景包括做市、统计套利和延迟套利等。本文聚焦于构建一个面向币安交易所的C++高频交易项目,深入探讨了开发环境配置、核心库选型、WebSocket数据流处理以及**

weixin_34005042的博客 345

基于YOLOv11的手术器械计数系统:从数据集构建到Web应用部署

m2cai16-tool数据集:包含15种腹腔镜手术器械的标注图像Cholec80数据集:包含80个胆囊切除手术视频,标注了7种器械SurgicalTools数据集:包含超过10,000张手术器械图像,涵盖21类常见器械手术剪(Scissors)止血钳(Hemostat)持针器(Needle Holder)手术刀(Scalpel)镊子(Forceps)拉钩(Retractor)吸引器(Suction)

YOLO 396

pyecharts在jupyter notebook中不能够渲染图表问题。

在使用jupyter notebook中使用pyecharts绘制可视化图表的时候,发现图表不能渲染到页面中,生成的html是没问题的,本文主要解决在jupyter notebook中不能渲染这个问题。

猿小白的博客 1165

C++遗留代码现代化实战:从诊断到重构的完整指南

在软件工程领域,技术债务是长期困扰开发团队的难题,尤其对于C++这类系统级语言。其核心原理在于,随着语言标准演进和工程实践发展,早期代码中的设计模式与资源管理方式会逐渐过时,形成所谓的“遗留代码”。现代C++通过引入RAII(资源获取即初始化)、智能指针、移动语义等特性,从语言层面提升了内存安全性与代码表达力,其技术价值在于显著降低未定义行为风险、提升可维护性并释放硬件性能。这些特性在大型桌面应用、嵌入式系统、高性能算法库等场景中尤为重要。本文聚焦于C++遗留代码的现代化改造,系统阐述了如何将智能指针、现代

weixin_33769125的博客 446

基于Spring Boot 3 + Vue 3 + UniApp的全栈高校社团管理小程序设计与实现

requestMatchers("/api/auth/**", "/doc.html", "/webjars/**", "/v3/api-docs/**").permitAll() // 公开接口。<u-search placeholder="搜索活动" v-model="searchKeyword" @search="loadActivities" :showAction="false"></u-search>R.success("活动创建成功") : R.error("活动创建失败");

2201_76125393的博客 368

C++音视频开发环境搭建:从WSL2、FFmpeg到VSCode的完整避坑指南

音视频处理是多媒体技术的核心领域,涉及对音频和视频数据的采集、编码、解码、传输与渲染。其底层原理依赖于高效的编解码算法和硬件加速,以确保海量媒体数据能够被实时、高质量地处理。在工程实践中,C++因其对系统底层的直接控制能力和卓越的运行性能,成为构建高性能音视频应用的首选语言。一个稳定且高效的开发环境是进行C++音视频开发的基石,它直接决定了后续编码、调试和项目集成的效率。本文聚焦于**环境搭建**这一关键起步环节,详细阐述了如何利用**WSL2**(Windows Subsystem for Linux 2

chaoyv 398

(四)美赛画图篇:画图模板+画图工具

美赛画图篇:画图模板+画图工具(一)画图模板(二)画图工具 因为散点图、折线图等多与数据有关,且需相关软件生成,故此处多是通用模板。直接替换文字内容即可。 (一)画图模板 1、Visio圆圈图 适合于:指标体系(E题常用) 点击下载:1 C币 如果不想花费且时间充足,悄咪咪地说,在visio-模板搜索可以找到很多。(稍微会耗一点时间) 2、简单指标体系图PPT 适合于指标体系 点击下载:0 C币...

weixin_43689393的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

CLion与Visual Studio深度对比:现代C++开发效率实战解析

集成开发环境(IDE)是程序员的核心生产力工具,其设计理念直接影响编码、调试与项目管理的效率。现代IDE通过深度集成编译器、调试器和构建系统,实现了从代码编写到构建部署的自动化,显著降低了开发复杂度。在C++开发领域,构建系统(如CMake)的统一管理和跨平台支持能力已成为评估IDE技术价值的关键指标,它确保了项目在不同环境下的行为一致性,从根本上解决了环境配置难题。智能代码补全、安全重构和实时分析等高级功能,则进一步提升了代码质量与维护效率。这些特性在桌面应用、服务器后端及嵌入式系统等多元场景中尤为重要。

weixin_33749131的博客 340

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: C++,设计模式,【建造者模式】
下一篇: 【C++学习笔记】深入理解虚函数和多态
智驾
博客等级 码龄11年 6670粉丝 574原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智驾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值