14.1 用发布配置自定义构建
2 分钟阅读
译文 · 基于 The Rust Programming Language(rustc 1.97.1)
用发布配置自定义构建
原文链接: https://doc.rust-lang.org/stable/book/ch14-01-release-profiles.html
用发布配置自定义构建
在 Rust 中,发布配置(release profiles)是一组预定义、可定制的配置,让你能更细致地控制编译选项。每个配置彼此独立设置。
Cargo 有两个主要配置:运行 cargo build 时使用的 dev 配置,以及运行 cargo build --release 时使用的 release 配置。dev 为开发提供了合适的默认值,release 则为发布构建提供了合适的默认值。
这些配置名你可能已经在构建输出里见过:
| |
这里的 dev 和 release,就是编译器使用的不同配置。
若项目的 Cargo.toml 中没有显式添加任何 [profile.*] 小节,Cargo 会对每个配置使用默认设置。你可以为想自定义的配置添加 [profile.*] 小节,从而覆盖默认设置中的任意子集。例如,下面是 dev 与 release 配置中 opt-level 的默认值:
文件名:Cargo.toml
| |
opt-level 控制 Rust 对代码应用多少优化,取值范围是 0 到 3。优化越多,编译时间越长。因此在开发阶段、需要频繁编译时,通常希望少做优化,以便更快编完——即便生成的代码运行会慢一些。于是 dev 的默认 opt-level 是 0。准备发布时,更值得多花编译时间:发布模式往往只编译一次,却会反复运行编译结果,因此用更长的编译时间换取更快的运行速度。这也是 release 配置默认 opt-level 为 3 的原因。
你可以在 Cargo.toml 里为某项设置指定不同的值,从而覆盖默认值。例如,若希望在开发配置中使用优化级别 1,可以在项目的 Cargo.toml 中加入这两行:
文件名:Cargo.toml
| |
这段配置会覆盖默认的 0。此后运行 cargo build 时,Cargo 会沿用 dev 配置的其余默认值,再加上我们对 opt-level 的定制。因为把 opt-level 设为了 1,Cargo 会比默认多做一些优化,但又不会像发布构建那样激进。
各配置的完整选项与默认值,见 Cargo 文档。