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

参考资料

About

conan

Language
Shell85.5%
Python10.2%
CMake2.6%
C++1.7%