Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

使用发布配置自定义构建

Customizing Builds with Release Profiles

在 Rust 中,发布配置(release profiles)是预定义的、可定制的配置文件,具有不同的配置,允许程序员对编译代码的各种选项有更多的控制。每个配置文件的配置彼此独立。

In Rust, release profiles are predefined, customizable profiles with different configurations that allow a programmer to have more control over various options for compiling code. Each profile is configured independently of the others.

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

Cargo has two main profiles: the dev profile Cargo uses when you run cargo build, and the release profile Cargo uses when you run cargo build --release. The dev profile is defined with good defaults for development, and the release profile has good defaults for release builds.

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

These profile names might be familiar from the output of your builds:

$ 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 是编译器使用的这些不同的配置文件。

The dev and release are these different profiles used by the compiler.

如果你没有在项目的 Cargo.toml 文件中显式添加任何 [profile.*] 部分,Cargo 会为每个配置文件应用默认设置。通过为想要自定义的任何配置文件添加 [profile.*] 部分,你可以覆盖默认设置的任何子集。例如,这里是 devrelease 配置文件中 opt-level 设置的默认值:

Cargo has default settings for each of the profiles that apply when you haven’t explicitly added any [profile.*] sections in the project’s Cargo.toml file. By adding [profile.*] sections for any profile you want to customize, you override any subset of the default settings. For example, here are the default values for the opt-level setting for the dev and release profiles:

文件名:Cargo.toml Filename: Cargo.toml

[profile.dev]
opt-level = 0

[profile.release]
opt-level = 3

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

The opt-level setting controls the number of optimizations Rust will apply to your code, with a range of 0 to 3. Applying more optimizations extends compiling time, so if you’re in development and compiling your code often, you’ll want fewer optimizations to compile faster even if the resultant code runs slower. The default opt-level for dev is therefore 0. When you’re ready to release your code, it’s best to spend more time compiling. You’ll only compile in release mode once, but you’ll run the compiled program many times, so release mode trades longer compile time for code that runs faster. That is why the default opt-level for the release profile is 3.

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

You can override a default setting by adding a different value for it in Cargo.toml. For example, if we want to use optimization level 1 in the development profile, we can add these two lines to our project’s Cargo.toml file:

文件名:Cargo.toml Filename: Cargo.toml

[profile.dev]
opt-level = 1

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

This code overrides the default setting of 0. Now when we run cargo build, Cargo will use the defaults for the dev profile plus our customization to opt-level. Because we set opt-level to 1, Cargo will apply more optimizations than the default, but not as many as in a release build.

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

For the full list of configuration options and defaults for each profile, see Cargo’s documentation.