本文档翻译自:https://docs.conan.io/en/latest/using_packages/conanfile_txt.html#requires

所需的依赖关系应在[requires]部分中指定。比如:

  1. [requires]
  2. mypackage/1.0.0@company/stable

说明:

  • mypackage 是软件包的名称,通常与项目/库相同。
  • 1.0.0 是通常与打包的项目/库相匹配的版本。这可以是任何字符串;不限制为数字。因此,可以指示这是“develop”还是“master”。包可以被覆盖,因此还可以定期重新生成“nightly”或“weekly”之类的包。
  • company 是指 软件包的所有者。本质上它是一个名称空间,它允许不同的用户为具有相同名称的相同库拥有自己的软件包。
  • stable 是 channel。channel提供了另一种方式来为同一库提供不同的程序包变体,通常将其表示为软件包的成熟度,例如“ stable”或“ testing”。但它们可以用于诸如软件包修订版之类的任何目的(例如,库版本未更改,但软件包源代码已更新)。

可选参数 user/channel

:::success Warning
这是一项实验性功能,可能会在将来的版本中发生重大更改。 ::: 如果程序包是在未指定 用户 和 频道 的情况下创建和上传的,则可以在指定参考时省略 user/channel:

  1. [requires]
  2. packagename/1.2.0

覆盖依赖

您可以指定多个依赖包,并覆盖可传递的依赖包。在我们的示例中,Conan 传递依赖安装了Poco软件包及其所有要求:

  • openssl/1.0.2t
  • zlib/1.2.11

:::info Tip**
由于保持OpenSSL库更新是很重要的,所以这个例子非常恰当的表达了这个需求。 :::

考虑已经发布了新版本的OpenSSL库,并且有相应的新conan软件包可用。在我们的示例中,我们不需要等到 pocoproject(作者)生成包含新的OpenSSL库的POCO的新软件包。
我们只需在[requires]部分中输入新版本:

  1. [requires]
  2. poco/1.9.4
  3. openssl/1.0.2u

第二行将使用当前不存在的 openssl/1.0.2u 覆盖 POCO 所需的 openssl/1.0.2t

我们可能想尝试一些zlib alpha新功能的另一个示例:我们可以用另一个 user/channel 的 zlib 需求来代替 zlib 要求。

  1. [requires]
  2. poco/1.9.4
  3. openssl/1.0.2u
  4. zlib/1.2.11@otheruser/alpha

:::info Note
你可以使用环境变量 CONAN_ERROR_ON_OVERRIDE 来为每个没有 显式 设置 override 关键字的抛出异常。 :::