首页 > 解决方案 > 如何在介子构建中指定依赖版本?

问题描述

我有两个 C++ 项目,都使用介子构建。一个是另一个的子项目:

noise-status是一个依赖noise-service

我正在noise-status使用包装文件导入子项目:

[wrap-git]
url = http://eng-server:9090/yxia/noise-status.git
revision = master

noise-service介子构建文件中,我指定了我想要使用的这个子项目的版本(noise-service标签最高为 0.5.0):

noise_status_dep = dependency('noise-status', required: false, version: '0.2.0')

但这显然不起作用,它总是将最新版本noise-status作为子项目拉取。我应该如何修改此设置以提取子项目的特定版本?

标签: c++meson-buildsubproject

解决方案


包装文件在您的情况下指定导入的版本。目前它会选择master. 您必须更改revision = master为要导入的标签。

手册

revision- 要结帐的修订名称。必须是:VCS 的 checkout 命令的有效值(例如 git 标签),或(对于 git) head跟踪上游的默认分支。必需的。

因此,如果您希望标签0.2.0将您的wrap文件更改为:

[wrap-git]
url = http://eng-server:9090/yxia/noise-status.git
revision = 0.2.0

dependency声明仍然会这样工作:

noise_status_dep = dependency('noise-status', required: false)

如果您也添加provide关键字,您可以声明一个可以在依赖项声明中引用的单独名称,例如:

[wrap-git]
url = http://eng-server:9090/yxia/noise-status.git
revision = 0.2.0

[provide]
dependency_names = noise-status-0.2.0

然后您可以使用该名称声明一个依赖项:

noise_status_dep = dependency('noise-status-0.2.0', required: false)

推荐阅读