如何在介子构建中指定依赖版本?

问题描述

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

noise-statusnoise-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作为子项目。我应该如何修改此设置以提取特定版本的子项目?

解决方法

包装文件指定了您所用的导入版本。当前它将选择master。您必须将revision = master更改为要导入的标签。

来自manual

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

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

[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)