【问题标题】:How to switch dependencies based on build profile如何根据构建配置文件切换依赖项
【发布时间】:2015-08-27 02:07:35
【问题描述】:

我想在构建发布配置文件时使用依赖项中的功能,并且我不想在测试/开发时使用任何功能。

例如,依赖通常定义为:

[depenencies.my_dep]
version = "*"

但是当我构建发布配置文件时,我希望它是

[depenencies.my_dep]
version = "*"
features = [my_feature]

从货物文档中我可以看出,这只能针对平台目标实现。有没有办法为基于配置文件的配置做到这一点?

【问题讨论】:

  • 虽然不是您问题的完美答案,但cfg(debug_assertions) 宏的源代码中使用了类似cfg(debug_assertions) 的东西,它基于调试和发布模式进行条件编译。在阅读这里的帖子users.rust-lang.org/t/conditional-compilation-for-debug-release/… 后,我曾经使用过它
  • 这听起来是个坏主意...为什么不想发布您测试的相同代码?
  • 我使用一个板条箱来执行一些分散的网络操作。因此,当我们开发时,我使用库的模拟网络功能进行开发和测试。然后连接到实际网络进行最终测试和发布
  • 虽然它不是你要找的东西,但为什么不直接使用default-features = ["my_feature"] 并在开发时使用cargos 标志--no-default-features
  • 一个很好的例子是 Amethyst 的 no-slow-safety-checks 功能(技术上是 Rendy)。为发布版本启用此功能会很好,但不适用于调试版本book.amethyst.rs/stable/appendices/c_feature_gates.html

标签: rust rust-cargo


【解决方案1】:

cargo 不直接支持你想要的。我看到了两个选项。

A.使用dev-dependencies 允许测试有不同的依赖 比调试/发布。 dev-dependencies described

B.有一个 Cargo-mock.toml 和一个 Cargo-release.toml。使用cargo build --manifest-path ./Cargo-<type>.toml 在它们之间切换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 2017-01-18
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多