30分钟让你明白怎么使用 Conan 进行 C++ 包管理

0x00 Conan 是啥

Conan 与 C++ 的关系可以用以下内容作类比:

  • Maven 之于 Java
  • pip 之于 Python
  • npm 之于 Node.js
  • gem 之于 Ruby

0x01 为啥要用 Conan

分两个层面来说:

C++ 包管理工具在所有方案中比较“中庸”

方案例子构建速度版本管理能力易用性
系统安装包管理器apt-get最快无法管理
包管理工具conan较快可控性较高较难
自己维护二进制包git可控性高(代价高)较难
源码编译Bazel可控性高

C++ 包管理工具中,Conan 用的人多

  • Conan:https://github.com/conan-io/conan
  • CPM:https://github.com/iauns/cpm
  • biicode:https://github.com/biicode

以上三个知名 C++ 包管理工具只有 Conan 还在继续更新。

0x02 Conan 工作机制

Conan 的主要特性:

特性一:开源

Conan 工具本身(即 Conan client & Conan server)是开源的

特性二:去中心化的包管理工具

与 git 的理念类似,Conan 有本地仓库与远程仓库的概念

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IA90Nzvk-1575689298807)(https://docs.conan.io/en/latest/_images/systems.png)]

  • Conan client:命令行工具,用于创建包和使用包,可创建本地仓库支持离线使用
  • Conan server:可私有化部署的服务
  • JFrog Artifactory:可私有化部署的仓库
  • JFrog Bintray:公开&公共仓库

特性三:二进制管理

Conan 最主要的功能就是可以管理好预编译好的二进制文件用于后续打包。

  • 在 Conan 中,一个包的定义: 包名/版本@用户/渠道
  • 同一个包在不同配置下(OS / Architecture / Build Type / Compiler / Compiler Version / compiler.libcxx)构建出的文件将分别保存并支持按需获取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Orfm1MYV-1575689298807)(https://docs.conan.io/en/latest/_images/binary_mgmt.png)]

特性四:跨平台

用Python写的,主流系统及研发工具均支持

0x03 Conan 环境搭建

JFrog Artifactory Community edition for C/C++::https://bintray.com/jfrog/product/JFrog-Artifactory-Cpp-CE/view

Conan:https://conan.io/downloads.html

0x04 集成 Conan

Conan支持的集成方式很多:https://docs.conan.io/en/latest/integrations.html。

这里我们以 makefile 工程来做简单说明,我们要用到 conanfile.py 以及 AutoToolsBuildEnvironment。

  • 源码:https://github.com/memsharded/conan-example-makefiles
  • 步骤:https://docs.conan.io/en/latest/howtos/makefiles.html
  • 文档:https://docs.conan.io/en/latest/reference/conanfile.html
  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值