是否可以在柯南包管理器中使用 github 分支?

Posted

技术标签:

【中文标题】是否可以在柯南包管理器中使用 github 分支?【英文标题】:Is it possible to use a github branch in conan package manager? 【发布时间】:2020-07-11 23:53:09 【问题描述】:

我想使用 imguis 对接分支。我想弄清楚的问题是使用柯南包管理器是否可以要求特定的分支,或者我是否需要编写自定义脚本来定位包中的特定分支?我能够获得主要的 imgui 包,但在目标分支上没有找到任何东西。

我目前正在使用 cmake 和 conanfile.txt。

目前这是我的conanfile.txt

[requires]
imgui/1.76

【问题讨论】:

【参考方案1】:

可以实现柯南食谱 (conanfile.py) 以获取任何分支、提交、标记或下载 .zip 存档。不可能制作一个任意配方,由其他人实施以做与它所做的不同的事情,因为它违背了版本控制和可重复性的整个目的。

imgui/1.76conanfile(.txt 或.py)中时,它正在获取ConanCenter 中存在的imgui 包,imgui package 中的详细信息,完整的配方可以在@中找到987654323@github repo,用于构建ConanCenter中所有包的repo

在该配方中,sources() 方法实现为:

def source(self):
   tools.get(**self.conan_data["sources"][self.version])
   extracted_dir = self.name + "-" + self.version
   os.rename(extracted_dir, self._source_subfolder)

conan_data 属性是来自conandata.yml file 的数据

sources:
  "1.74":
    url: "https://github.com/ocornut/imgui/archive/v1.74.tar.gz"
    sha256: "2f5f2b789edb00260aa71f03189da5f21cf4b5617c4fbba709e9fbcfc76a2f1e"
  "1.75":
    url: "https://github.com/ocornut/imgui/archive/v1.75.tar.gz"
    sha256: "1023227fae4cf9c8032f56afcaea8902e9bfaad6d9094d6e48fb8f3903c7b866"
  "1.76":
    url: "https://github.com/ocornut/imgui/archive/v1.76.tar.gz"
    sha256: "e482dda81330d38c87bd81597cacaa89f05e20ed2c4c4a93a64322e97565f6dc"
  "1.77":
    url: "https://github.com/ocornut/imgui/archive/v1.77.tar.gz"
    sha256: "c0dae830025d4a1a169df97409709f40d9dfa19f8fc96b550052224cbb238fa8"

配方使用的来源是版本对应的版本,当你使用包时,不能更改。

可以复制/分叉配方,使其适应需求,例如更改source() 方法,或更改conandata.yml 文件,为特定的提交、标签或分支创建包(它会可能建议更改version,以区分软件包与官方发布版本)。还建议在username/channel 下创建包,如imgui/version@myteam/stable,以区别于 ConanCenter 之一。 Artifactory CE 也是完全免费的,可用于私下托管您自己的软件包。

【讨论】:

以上是关于是否可以在柯南包管理器中使用 github 分支?的主要内容,如果未能解决你的问题,请参考以下文章

如何在openSUSE Tumbleweed上安装柯南包管理器最正确?

如何不在我的柯南包中包含源文件?

Cmake:使用柯南 pybind11 包

使用 Github API 是不是可以确定一个分支是不是在默认分支之前?

在 swift 包管理器中为 API 调用编写单元测试

Eclipse - 在项目/包资源管理器中更改字体大小