键盘快捷键

按 ← 或 → 在章节之间导航

按 S 或 / 在本书中搜索

按 ? 显示此帮助

按 Esc 隐藏此帮助

使用 Release 配置文件自定义构建

在 Rust 中,release 配置文件(release profiles)是预定义的、可自定义的配置文件,它们具有不同的配置,使程序员能够对代码编译的各种选项拥有更多控制权。每个配置文件都是独立于其他配置文件配置的。

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

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

当你没有在项目的 Cargo.toml 文件中显式添加任何 [profile.*] 部分时,Cargo 对每个配置文件都有默认设置。通过为你想要自定义的任何配置文件添加 [profile.*] 部分,你可以覆盖默认设置的任何子集。例如,以下是 dev 和 release 配置文件的 opt-level 设置的默认值:

文件名:Cargo.toml

[profile.dev]
opt-level = 0

[profile.release]
opt-level = 3

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

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

文件名:Cargo.toml

[profile.dev]
opt-level = 1

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

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