使用发布配置文件自定义构建
在 Rust 中,*发布配置文件*是预定义和可自定义的配置文件,具有不同的配置,允许程序员对编译代码的各种选项进行更多控制。每个配置文件都独立于其他配置文件进行配置。
Cargo 有两个主要配置文件:您运行 cargo build
时 Cargo 使用的 dev
配置文件和您运行 cargo build --release
时 Cargo 使用的 release
配置文件。dev
配置文件使用适合开发的默认值进行定义,而 release
配置文件使用适合发布构建的默认值进行定义。
您可能在构建输出中熟悉这些配置文件名称
$ cargo build
Finished dev [unoptimized + debuginfo] target(s) in 0.0s
$ cargo build --release
Finished release [optimized] target(s) in 0.0s
dev
和 release
是编译器使用的这些不同配置文件。
Cargo 为每个配置文件提供了默认设置,这些设置在您没有在项目的 Cargo.toml 文件中显式添加任何 [profile.*]
部分时适用。通过为要自定义的任何配置文件添加 [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 文档。