使用发布配置自定义构建

在 Rust 中,发布配置是预定义且可自定义的配置文件,具有不同的配置,允许程序员对编译代码的各种选项拥有更多控制。每个配置文件都是独立配置的。

Cargo 有两个主要配置文件:当您运行 cargo build 时 Cargo 使用的 dev 配置文件,以及当您运行 cargo build --release 时 Cargo 使用的 release 配置文件。dev 配置文件定义了开发的良好默认值,而 release 配置文件则为发布构建提供了良好的默认值。

这些配置文件名称可能在你的构建输出中很熟悉:

$ cargo build
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.00s
$ cargo build --release
    Finished `release` profile [optimized] target(s) in 0.32s

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

Cargo 为每个配置文件提供了默认设置,当您没有在项目的 Cargo.toml 文件中显式添加任何 [profile.*] 部分时,这些设置将生效。通过为任何您想要自定义的配置文件添加 [profile.*] 部分,您可以覆盖默认设置的任何子集。例如,这是 devrelease 配置文件的 opt-level 设置的默认值:

文件名: Cargo.toml

[profile.dev]
opt-level = 0

[profile.release]
opt-level = 3

opt-level 设置控制 Rust 将应用到您的代码的优化数量,范围从 0 到 3。应用更多的优化会延长编译时间,因此如果您正在开发中并且经常编译代码,您会希望减少优化以更快地编译,即使生成的代码运行速度较慢。因此,dev 的默认 opt-level0。当您准备发布代码时,最好花更多时间编译。您只会一次在发布模式下编译,但您会多次运行编译后的程序,因此发布模式通过更长的编译时间换取运行更快的代码。这就是为什么 release 配置文件的默认 opt-level3

您可以通过在 Cargo.toml 中添加不同的值来覆盖默认设置。例如,如果我们要在开发配置文件中使用优化级别 1,可以在项目的 Cargo.toml 文件中添加以下两行:

文件名: Cargo.toml

[profile.dev]
opt-level = 1

这段代码覆盖了默认设置 0。现在当我们运行 cargo build 时, Cargo 将使用 dev 配置文件的默认设置加上我们对 opt-level 的自定义。 因为我们把 opt-level 设置为 1,Cargo 将应用比默认更多的优化,但不如发布构建中的多。

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