使用发布配置文件自定义构建

在 Rust 中,发布配置文件是预定义和可定制的配置文件,其中 不同的配置允许程序员对 用于编译代码的各种选项。每个配置文件都独立于 其他人。

Cargo 有两个主要配置文件:dev配置文件 Cargo 在运行时使用cargo buildrelease配置文件 Cargo 在运行时使用cargo build --release.这devprofile 定义了用于开发的良好默认值, 和releaseprofile 具有良好的发布版本默认值。

这些配置文件名称可能从您的构建输出中熟悉:

$ cargo build
    Finished dev [unoptimized + debuginfo] target(s) in 0.0s
$ cargo build --release
    Finished release [optimized] target(s) in 0.0s

devrelease是编译器使用的这些不同的配置文件。

Cargo 对每个配置文件都有默认设置,当您没有应用时 显式添加了任何[profile.*]部分。 加入[profile.*]sections 中,您可以 覆盖默认设置的任何子集。例如,以下是默认的 的值opt-level设置为devrelease配置 文件:

文件名: Cargo.toml

[profile.dev]
opt-level = 0

[profile.release]
opt-level = 3

opt-level设置控制 Rust 将应用于的优化数量 您的代码,范围为 0 到 3。应用更多优化扩展 编译时间,因此,如果你正在进行开发并经常编译代码, 您需要更少的优化以更快地编译,即使生成的代码 运行速度较慢。默认的opt-leveldev因此0.当您 准备好发布您的代码,最好花更多时间进行编译。您只会 在 release 模式下编译一次,但您将多次运行编译后的程序, 因此,发布模式会用更长的编译时间来换取运行速度更快的代码。那是 为什么默认opt-level对于releaseprofile 为3.

您可以通过在 Cargo.toml 中为其添加不同的值来覆盖默认设置。例如,如果我们想在 development 配置文件中,我们可以将这两行代码添加到项目的 Cargo.toml 文件中:

文件名: Cargo.toml

[profile.dev]
opt-level = 1

此代码将覆盖0.现在,当我们运行cargo build, Cargo 将使用devprofile 加上我们的定制opt-level.因为我们设置了opt-level1,Cargo 将适用更多 优化,但不如发布版本中的优化那么多。

有关每个配置文件的配置选项和默认值的完整列表,请参阅 Cargo 的文档

本文档由官方文档翻译而来,如有差异请以官方英文文档(https://doc.rust-lang.org/)为准