柯南打包时如何避免两次列出依赖项?

How to avoid listing dependencies twice when packaging with Conan?

我目前正在尝试将项目打包为 Conan 包。这个项目已经管理它与柯南本身的依赖关系,因此有一个 conanfile.txt 列出了它的依赖关系。我在 how the documentation suggests doing it.

之后在回购中进行

现在我想打包这个项目,但我不知道什么是简单地让 conanfile.txt 成为项目依赖项的参考的正确方法,以及是否可以利用这样一个事实它已经存在,而不是重新列出 conanfile.py 中的所有依赖项。我可以通过删除 conanfile.txtusing the conanfile.py as a consumer 来跳过它,但这会强制对我想避免的食谱中的实际 build() 步骤进行更复杂的处理。我还想让开发库的人能够按照他们喜欢的方式构建它,除了依赖管理之外不一定要通过 Conan。

有没有办法从 Conan 配方中获取项目依赖项,而不是在 Conan 配方的 conanfile.txtrequires 变量中列出两次依赖项?如果可能的话,我想避免读取 conanfile.txt 并手动将依赖项逐行输入到 requires 变量中。

我知道我可能正在寻找一种不符合柯南设计的方式and/or包装通常应该如何工作。

您可以使用 conanfile.txt,但我强烈建议您改用 conanfile.py。 您也可以 运行 conan install .,并安装 conanfile.py 中列出的所有依赖项。由于命令 install 不会 运行 你的 build() 部分,我看不出问题所在。

无论如何,您可以在 conanfile.py 中创建一个基础 class 来加载 conanfile.txt 内容并过滤要求。不经意,这听起来比只使用 conanfile.py.

更复杂

从功能上来说,没办法,柯南不加载这两个文件。默认情况下它将 conanfile.py 并忽略 conanfile.txt。您不能同时通过参数或变量强制执行。