You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动上传Conan生成的包及其依赖包至仓库?

如何自动上传Conan包及其依赖至仓库?

问题场景

编译了未存入仓库的<package-A>,随后创建依赖<package-A>的<package-B>。执行conan upload <package-B> --all -r <repository>仅能上传<package-B>,删除本地包后执行conan install <package-B> -r <repository>会报错,因为<package-A>在本地和仓库中均不存在。

解决方案

可以通过生成锁文件(lockfile)识别所有本地依赖,实现批量上传:

  • 生成包含所有本地依赖的锁文件
    执行以下命令,基于指定profile在本地生成锁文件,该文件会包含<package-B>及其所有依赖(包括未上传的<package-A>):

    conan lock create --reference package-b/version@user/channel --lockfile-out=<lockfile-name> -pr=<profile>
    
  • 批量上传所有依赖包
    无需执行conan lock build-order(该命令会从远程仓库查找依赖,而非本地),直接解析上述生成的锁文件,提取所有包引用并批量上传:
    示例命令(以锁文件名为conan.lock为例):

    conan lock list --reference package-b/version@user/channel --lockfile=conan.lock | xargs -I {} conan upload {} --all -r <repository>
    

    或者通过jq解析JSON格式的锁文件(需提前安装jq):

    jq -r '.graph.nodes[].ref' conan.lock | xargs -I {} conan upload {} --all -r <repository>
    

执行完成后,<package-B>及其依赖<package-A>都会被上传至指定仓库,此时再执行conan install即可正常拉取所有依赖。

内容的提问来源于stack exchange,提问作者Keonik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 11:48:25