linux上C++开发——1. C++包管理工具
C++包管理工具
·
文章目录
1. 包管理器的作用
1.1 常见的包管理器
不管你是哪个领域的程序猿,基本上每种语言都有自己的包管理程序,比如:
- java:Maven包管理工具
- javascript:npm包管理工具
- python:pip包管理工具
等等,但是c/c++以前似乎没有,近几年似乎开始出现(也可能是因为我开始关注了)
1.2 C++使用第三方库的方式
C/C++ 项目如果要依赖第三方库,一般会有以下三种方式:
- 直接在源码中包裹第三方库的头文件和二进制
- 把第三方库的源码带入工程中随项目一起编译
- 依赖系统中安装的组件,而后使用 pkg_config 或 CMake 的 find 系函数来查找依赖
其中
- 方案1不具备可移植性,但依赖非开源组件且无软件包可用时往往只能用这种方法;
- 方案2,普适性比较强,可以针对源码做定制,但是大大增加了源码的大小和构建的耗时;
- 方案3,Windows 下往往不可用,并且需要用户手动准备环境,每次搭建新环境时比较繁琐。
1.3 C++包管理器的诞生
- 从1.2 C++使用第三方库的方式中可以看出,依赖管理的方式很多,都有各自的缺陷。
- 另外,C/C++ 本身的定位和历史也导致其包管理比较复杂。
- 它能 Target 到众多的平台上,从 X86、X64 到 Arm,从 Windows、Linux 到 MacOS 甚至于嵌入式的系统中。
- 每个平台的特点都不尽相同,甚至于相同平台使用不同编译器构建后能产生不同的 ABI。
- 这使得包管理器的设计远比无需编译的 Python、JS 一流复杂很多。
所以导致C++的包管理器诞生很晚
参考:
- CSDN博客:conan使用(二)–conan环境搭建
- CSDN博客:conan依赖管理使用方法
1. 常见的C++包管理工具
1.1 Conan
Conan
- 知乎问题:如何评价c++包管理工具conan?
- github地址:https://github.com/conan-io/conan
- 官方主页:https://conan.io/
- 官方文档:https://docs.conan.io/en/latest/
- 第三方文档:https://caiorss.github.io/C-Cpp-Notes/package-managers.html#org640867c
1.2 vcpkg
vcpkg
- 知乎问题:如何看待 Windows 的 C++ 包管理器 vcpkg?
- github地址:https://github.com/microsoft/vcpkg
- 官方主页:https://vcpkg.io/en/index.html
- 官方文档:https://vcpkg.io/en/docs/README.html
- 第三方文档:https://caiorss.github.io/C-Cpp-Notes/package-managers.html#orge9eb3a1
1.3 其它
- Spack
- Hunter
- Buckaroo
- Xmake(国人开发)
- 知乎问题:如何评价 xmake?
- github链接:https://github.com/xmake-io/xmake
- 文档主页:https://xmake.io/#/
参考:
- 👻 Package Managers for C++
- 👻 https://caiorss.github.io/C-Cpp-Notes/package-managers.html
- 简书文章:C++ CMake和vcpkg进行包管理
- 博客园文章:C/C++ 构建系统,我用 xmake
- CSDN文章:打包一沓开源的 C/C++ 包管理工具送给你!
- Stack Overflow:Does C++ have a package manager like npm, pip, gem, etc? [closed]
2. Conan简单使用
2.1 基本介绍
去中心化,开源免费的C/C++管理器。
- 去中心化,具体表现为:可以搭建自己的包管理服务器,不像python那样必须全部通过python的Pypi来安装包。
- 如果想发布一个python包,那么一般需要注册pypi,然后才可以发布的。
- 允许搭建自己的私有仓库,供私有项目使用。(完美白嫖)
2.2 基本使用
关于conan,深入的资料没有很多,所以日常使用,基本皮毛应该就够了。
TBD
等我用完,踩了坑再来总结
可以参考以下内容:
- CSDN博客:conan使用(二)–conan环境搭建
- CSDN博客:conan依赖管理使用方法
- 知乎:C/C++包管理Conan教程,这个人没有专门列出一个专栏,但是有很多篇关于conan的教程
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)