Cargo 是否统一了[构建依赖项] 和[依赖项] 的功能?

问题描述 投票:0回答:1

我在复杂的代码库中遇到了一个奇怪的问题,这可能是因为我没有正确理解货物功能在

[build-dependencies]
存在的情况下如何传播。

所以我有一个项目 X 依赖于依赖项 Y。该箱 Y 公开了一个货物功能,该功能永远不应该在最终构建中启用。

但是主项目 X 需要由 在构建时 启用的 Y 功能。因此,在 X 中,我在 Y 上有一个

[build-dependency]
,启用了该功能,在 Y 上有一个
[dependency]
,没有该功能。

看来,cargo 只会在启用该功能的情况下构建 Y

;它将使用构建脚本的功能来编译 Y,并将其重用于常规依赖项。我本来希望在没有该功能的情况下,cargo 会重新编译 Y。 如何在

[build-dependencies]

[dependencies]
之间统一/传播功能的详细信息是什么?阅读
https://doc.rust-lang.org/cargo/reference/specifying-dependency.html#build-dependency
我只看到有关依赖项(而不是功能)的信息:

包本身及其构建脚本是单独构建的,因此它们的依赖关系不需要一致。

请注意,该项目正在使用
edition = "2021"

resolver = "2"
感谢您的澄清!

rust rust-cargo cargo cargo-features
1个回答
0
投票

使用旧的解析器 (

resolver = "1"

),Cargo 将统一

build-dependencies
dev-dependencies
之间的功能以及您的主代码。
但是,有了
resolver = "2",就不会
如果您设置了

resolver = "2"

并且 Cargo 仍在统一功能,则这是一个您可以报告的错误。

    

© www.soinside.com 2019 - 2024. All rights reserved.