Conan 中的“包”概念

Conan 作为 C++ 包管理软件,最重要的功能就是“包”,因此我们需要仔细看看其包管理的基本概念。

定义:“包” 与 “二进制包”

Conan 最主要的功能就是可以管理好预编译好的二进制文件用于后续打包。关于“包”这里有两层定义:“包”(package recipe)、 “二进制包”(binary package)。

区别 “包”(package recipe) “二进制包”(binary package)
概念 逻辑定义 实际使用
从属关系 1:N 1:N
定义 包名/版本@用户/渠道 settings & options

过程:如何从“包” 变成 “二进制包”

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

setting 和 option 的区别:setting 是 Conan 给出标准配置项,option 是包的自定义配置项。

方法:3 种打包方式

  • package_info():1 config (1 build) -> 1 package
  • package_info():N configs -> 1 package
  • build_id():N configs (1 build) -> N packages

技巧:基于“配置文件”进行打包

我们知道在 Conan 中,可以通过设置不同的 setting 和 option 生成不同的“二进制包”(binary package)。通过“配置文件”(profiles)就可以方便的进行管理。

一个配置文件的定义:

[settings]
#setting=value
os_build=Linux
arch_build=x86_64
os=Macos
arch=x86_64
compiler=clang
compiler.version=3.5
compiler.libcxx=libstdc++11
build_type=Release


[options]
#MyLib:shared=True
*:shared=True

[env]
#env_var=value
CC=/usr/bin/clang
CXX=/usr/bin/clang++

[build_requires]
#tool/version@user/channel
Tool2/0.1@user/channel, Tool3/0.1@user/channel
*: Tool4/0.1@user/channel

你可能感兴趣的:(持续集成)