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