使用发布配置自定义构建
在 Rust 中,发布配置 是预定义且可自定义的配置,它们具有不同的配置,允许程序员更好地控制编译代码的各种选项。每个配置都是独立于其他配置进行配置的。
Cargo 有两个主要的配置:dev
配置(当你运行 cargo build
时 Cargo 使用)和 release
配置(当你运行 cargo build --release
时 Cargo 使用)。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.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 的文档。