linux上C++开发——1. C++包管理工具
文章目录
- 1. 包管理器的作用
- 1.1 常见的包管理器
- 1.2 C++使用第三方库的方式
- 1.3 C++包管理器的诞生
- 1. 常见的C++包管理工具
- 1.1 Conan
- 1.2 vcpkg
- 1.3 其它
- 2. Conan简单使用
- 2.1 基本介绍
- 2.2 基本使用
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++的包管理器诞生很晚
- 微软的vcpkg是2019年7月1日发布了第一个版本,
- conan是2015年12月1日可以看到github上第一个版本
- 目前看来,conan用的人好像更多一些,后续使用以conan为主
参考:
- 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/#/
参考:
-
linux上C++开发——1. C++包管理工具相关推荐
- Linux RPM、YUM、APT包管理工具
⒈rpm包的管理 1)介绍 rpm是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有.RPM扩展名的文件,RPM是RedHat Package Manager(RedH ...
- 现代化程序开发笔记(4)——包管理工具
本系列文章以我的个人博客的搭建为线索(GitHub 仓库:Evian-Zhang/evian-blog),记录我在现代化程序设计中的一些笔记.在这篇文章中,我会就项目构建工具和包管理工具做一些讨论,先 ...
- Linux包管理工具apt,Linux RPM、YUM、APT包管理工具
⒈rpm包的管理 1)介绍 rpm是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有.RPM扩展名的文件,RPM是RedHat Package Manager(RedH ...
- python各种包安装顺序_史上最全的Python包管理工具:Anaconda教程
事实上Anaconda 和 Jupyter notebook已成为数据分析的标准环境. 简单来说,Anaconda是包管理器和环境管理器,Jupyter notebook 可以将数据分析的代码.图像和 ...
- linux管理外部工具,linux – 除了iptables之外的数据包管理工具?
我正在寻找可以根据一组规则改变网络数据包的有效内容的 linux实用程序.理想情况下,我会使用iptables和netfilter内核模块,但它们不支持通用的有效负载调整:iptables会改变各种头 ...
- Yum包管理工具的20个常用命令
什么是YUM? YUM(Yellowdog Updater Modified)是一个开源命令行,也是基于RPM(RedHat Package Manager)的Linux系统的基于图形的包管理工具.它 ...
- git管理工具_使用包管理工具
HomeBrew HomeBrew 是Mac上十分好用的包管理工具. 如果使用过 Linux,那么一定不会对 yum 或者 apt 感到陌生.homebrew 就是 Mac 上的这样的一个包管理工具. ...
- 五种常见 Linux 系统安装包管理工具中文使用指南
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 介绍常见 Linux 操作系统的安装包管理工具,主要介绍其使用命令! 包管理系统除了安装软件外,它还提供了工具来更 ...
- linuxpip安装python包_Windows+Linux安装Python包管理工具pip
Windows+Linux安装Python包管理工具pip Windows安装Python包管理工具pip pip是一个Python包管理工具,主要是用于安装PyPI上的软件包,可以替代easy_in ...
最新文章
- 黑洞是如何被拍照的?
- 设置centos6.5虚拟机时间同步
- 图的深度搜索c语言,求图的深度优先搜索!该怎么处理
- canpro脚本_AE/PR脚本-创建编辑导入导出专业字幕脚本 Subtitle Pro 2.8.0 + 使用教程...
- 继续送假期干货——响应式图片工具smartImg
- JavaBean中的属性
- (二)ElasticSearch6.1.1 Python API
- 如何在CDH5.16.2中部署海豚调度器Apache Dolphin Scheduler 1.2.0
- C++语言基础 —— 循环结构
- html页面循环报错,wxs 脚本中 for 循环的一种写法导致 page-frame.html 报错
- cilium插件测试_Cilium网络概述
- qt 发送数据到http
- 网络配置管理大大减轻网络管理员的负担
- Seismic Unix安装
- DELL服务器自动开机设置
- python坐标轴的粗细设置
- Callnovo如何因小见大,高端定制——“快乐的音符跳动在异国他乡”篇
- java架构模式与设计模式(三)--事件风暴
- [Linux 学习] grub 引导文件
- 《经济学讲义 上》 李俊慧 读书笔记
热门文章
- 「揭秘GP」Greenplum 的人工智能应用场景:MADlib、GPText、GPU
- dotnetty java netty,Netty(DotNetty)原理解析
- js中 some, every, filter 的使用以及区别
- 电路分析六----节点电压分析法
- 2008-06-27 德国二战老兵的下午茶
- nginx配置静态资源html,详解nginx静态资源服务器简单配置
- 亲爱的老狼-论cellspacing和collapse的区别
- 钟雅涵:端午魔咒?黄金牛市刚启动,原油摇旗冲新高
- 自动化测试框架有哪几种?全网最全面的总结来了
- 二次解析视屏 php,[PHP源码]最新PHP二次视频解析源码 带后台版/13092
- Linux RPM、YUM、APT包管理工具