文章目录
背景
开始学习C和C++, 认为一切就那么回事, 编程就好.
后来学习 python 发现有些东西我们自己写, 浪费时间. 幸而有 pip 和 conda 等方法安装人家已经写好的包.
回过头再看 C++, 这种东西还是欠缺官方支持.
看了某算命的(Benny Huo)的视频, 介绍 conan. 开始认识这个工具. 并与今日能够做到将将会用的程度.
背景知识
- C / C++ 语言编程, 多文件程序设计相关知识
- CMake 构建工具的认识. CMakeLists.txt 能够自行编写.
- python 语言基础 (可选, 推荐)
背景环境
- C/C++ 开发环境
- Cmake 已经安装 (推荐版本 ≥ 3.23 \geq 3.23 ≥3.23)
- python 开发环境
- pip 能够正常使用
说明
conan 这个东西在项目级 C/C++ 程序设计中有很高效果. 但是在单文件的 c++ 的程序性价比很低. 你不大可能为了一个程序源代码文件建立一个项目.
当前(2024-04-11) conan 的使用方法和之前的 conan 使用方法有较大差异, 未来也可能会有较大差异. 如果发现此教程不能使用, 也有可能是版本更新导致.
安装 conan
pip 命令:
pip install conan
此后输入命令
conan
得到类似下面的结果, 认为安装成功
使用 conan 安装包
项目文件准备
来到准备安装包的项目文件夹, 提前写好CMakeLists.txt .
新建文件, 推荐命名为 conanfile.py (如果不, 则需要指定文件名)
包查找和信息添加
在 conan-center 官网上, 找到你想安装的包(这里以 antlr4 的 c++ 运行时为例), 点击conanfile.py 选项, 复制其中的代码:
今后如果有新的包需要添加, 找到对应的包(以 fmt 为例) 找到对应的 conanfile.py 选项, 将新需要的
settings
,
generators
补到当前的 conanfile.py 的后面. 然后在
requirements
方法中添加
self.requires(...)
信息:
from conan import ConanFile
from conan.tools.cmake import cmake_layout
classExampleRecipe(ConanFile):
settings ="os","compiler","build_type","arch"# 这里也相同
generators ="CMakeDeps","CMakeToolchain"# 这里相同defrequirements(self):
self.requires("fmt/10.2.1")# 补了一个 fmt 的信息
self.requires("antlr4-cppruntime/4.13.1")deflayout(self):# 这里相同
cmake_layout(self)
保存文件
配置信息建立
首次使用需要建立配置信息:
conan profile detect --name DaochiDebug --force
首次建立, 建议不要加
--name
和后面的参数
DaochiDebug
根据生成的信息, 确定配置生成的目录, 可以到对应地址, 修改你的配置.
参数说明:
--name xxx
将会生成名为 xxx 的配置文件
--force
如果不加此选项, 运行时发现有同名文件时, 会报错. 加此选项则覆盖掉同名配置文件.
安装包
运行命令(可以在网页上看到)
conan install[ConanFileName]\--build=missing\[--profile <profile Name>][--output-folder <folder Name>]
参数说明
--build=missing
只构建未曾安装过的 conan 包.
--profile <profile Name>
如果不写, 默认是采用 default 配置
--output-folder <folderName>
很 ** 的设定, 生成的配置信息, 将会放到
folderName
下的 build 文件夹中. 所以我的配置是不写这个.
留意生成信息:
注意到蓝字下面第三行信息: “Preset conan-xxx added to CMakePresets.json. Invoke it manually using xxxxxx if cmake >= 3.23”
解释:
如果你的 cmake 版本 >= 3.23 则在当前目录下输入命令:
cmake --preset xxx # (xxx 取决于它生成的信息)
否则需要输入下面一长串的命令:
cmake <path>-G"Unix Makefiles"\-DCMAKE_TOOLCHAIN_FILE=xxxx \-DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_BUILD_TYPE=Debug
之后可以继续编写代码然后转到生成目录运行
make
命令生成目标.
每次更新配置, 都需要到根目录运行
cmake --preset xxx
或者是那一长串命令.
结
这个东西的使用还算方便, 也不用我手动构建然后再关注包的地址等一堆麻烦事. 也是推荐各位使用.
不过版本更新差距也不小, 之前的 conan 的使用和现在的使用有很大不同, 需要关注.
版权归原作者 捯饬点啥 所有, 如有侵权,请联系我们删除。