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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaosongluo/article/details/82384642

0x00 Conan 是啥

Conan 与 C++ 的关系可以用以下内容作类比:
- Maven 之于 Java
- pip 之于 Python
- npm 之于 Node.js
- gem 之于 Ruby

0x01 为啥要用 Conan

分两个层面来说:

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

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

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

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

0x02 Conan 工作机制

Conan 的主要特性:

特性一:开源

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

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

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

image

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

特性三:二进制管理

Conan 最主要的功能就是可以管理好预编译好的二进制文件用于后续打包。
- 在 Conan 中,一个包的定义: 包名/版本@用户/渠道
- 同一个包在不同配置下(OS / Architecture / Build Type / Compiler / Compiler Version / compiler.libcxx)构建出的文件将分别保存并支持按需获取

image

特性四:跨平台

用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。

猜你喜欢

转载自blog.csdn.net/xiaosongluo/article/details/82384642