使用发布配置文件自定义构建


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


Cargo 有两个主要配置文件:Cargo 在运行 cargo build 时使用的 dev 配置文件,以及 Cargo 在运行 cargo build --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


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。当您准备好发布代码时,最好花更多时间进行编译。你只会在发布模式下编译一次,但你会多次运行编译后的程序,因此发布模式会用更长的编译时间来换取运行得更快的代码。这就是为什么发布配置文件的默认 opt-level3 的原因。


您可以通过在 例如,如果我们想在 development profile 中使用优化级别 1,我们可以将这两行添加到我们项目的 Cargo.toml 中。 文件:


文件名: Cargo.toml

[profile.dev]
opt-level = 1


此代码将覆盖默认设置 0。现在,当我们运行 cargo build 时,Cargo 将使用 dev 配置文件的默认值以及我们对 opt-level 的 Opt 级别。因为我们将 opt-level 设置为 1,所以 Cargo 将应用比默认值更多的优化,但不会像发布版本中那样多。


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