logo
0
0
WeChat Login

Conan 包推送 Demo

这是一个完整的 Conan 包创建和推送示例。

项目结构

conan-push/ ├── conanfile.py # Conan 包定义文件 ├── CMakeLists.txt # CMake 构建配置 ├── include/ │ └── hello.h # 头文件 ├── src/ │ └── hello.cpp # 源代码 ├── push.sh # 单包推送脚本 ├── push_batch.sh # 批量推送脚本 └── README.md # 本文件

前置要求

  1. 安装 Conan 2.x:
pip install conan
  1. 安装 CMake 和 C++ 编译器:
# macOS brew install cmake # Ubuntu/Debian sudo apt-get install cmake build-essential # Windows # 下载安装 CMake 和 Visual Studio

使用方法

方法 1: 推送单个包(推荐)

# 给脚本执行权限 chmod +x push.sh # 推送默认版本 (1.0.0) ./push.sh # 推送指定版本 ./push.sh 2.0.0

方法 2: 批量推送多个版本

# 给脚本执行权限 chmod +x push_batch.sh # 推送 1 个包 ./push_batch.sh 1 # 推送 5 个包(版本号自动递增) ./push_batch.sh 5

方法 3: 手动执行(逐步理解)

# 1. 添加远程仓库 conan remote add coding-conan http://codingcorp-conan.pkg.artifact-dev-02.devnb.codingcorp.net/silky_test/coding-conan # 2. 登录认证 conan remote login coding-conan coding-conan-1768881572817 -p 94fb12a3797557f54ec13fd230b635ccebf707bc # 3. 创建包 conan create . --version=1.0.0 --build=missing # 4. 上传包 conan upload hello/1.0.0 -r coding-conan --confirm

验证推送结果

查看远程仓库的包

# 搜索包 conan search hello -r coding-conan # 查看包详情 conan search hello/1.0.0 -r coding-conan

在其他项目中使用

创建 conanfile.txt

[requires] hello/1.0.0 [generators] CMakeDeps CMakeToolchain

安装依赖:

conan install . -r coding-conan --build=missing

自定义包

修改包名和版本

编辑 conanfile.py

class HelloConan(ConanFile): name = "your-package-name" # 修改包名 version = "2.0.0" # 修改版本

添加依赖

conanfile.py 中添加:

class HelloConan(ConanFile): # ... requires = "boost/1.82.0", "openssl/3.1.0"

修改代码

  • 头文件:include/hello.h
  • 源文件:src/hello.cpp
  • 构建配置:CMakeLists.txt

常见问题

1. 认证失败

检查用户名和密码是否正确:

conan remote login coding-conan coding-conan-1768881572817 -p YOUR_PASSWORD

2. 构建失败

确保已安装 CMake 和 C++ 编译器:

cmake --version g++ --version # 或 clang++ --version

3. 包已存在

如果要覆盖,使用 --force 参数:

conan upload hello/1.0.0 -r coding-conan --confirm --force

4. 查看本地缓存的包

# 列出所有本地包 conan list "*" # 查看特定包 conan list "hello/*" # 删除本地包 conan remove "hello/1.0.0"

Conan 常用命令

# 查看远程仓库列表 conan remote list # 移除远程仓库 conan remote remove coding-conan # 搜索包 conan search hello -r coding-conan # 查看包详情 conan inspect . # 创建包(不上传) conan create . --version=1.0.0 # 仅构建 conan build . # 导出包到本地缓存 conan export . --version=1.0.0 # 清理构建目录 conan cache clean

参考资料