Rust 學習筆記:自定義構建和發布配置
- Rust 學習筆記:自定義構建和發布配置
- 發布配置文件
- 自定義 profile 的選項
Rust 學習筆記:自定義構建和發布配置
發布配置文件
在 Rust 中,發布配置文件是預定義的和可定制的概要文件,具有不同的配置,允許程序員對編譯代碼的各種選項有更多的控制。
每個配置文件都是獨立的。
Cargo 有兩個主要配置文件:
- 開發配置文件(dev profile):運行 cargo build 時使用,適用于開發,默認優化調試體驗
- 發布配置文件(release profile):運行 cargo build --release 時使用,適用于發布,默認優化性能
在構建的輸出中,你可能對這些配置文件名稱很熟悉:
$ cargo buildFinished `dev` profile [unoptimized + debuginfo] target(s) in 0.00s
$ cargo build --releaseFinished `release` profile [optimized] target(s) in 0.32s
自定義 profile 的選項
當沒有顯式地在項目的 Cargo.toml 文件中添加任何 [profile. *] 部分時,Cargo 對應用的每個概要文件都有默認設置。
為想要自定義的任何概要文件添加 [profile. *] 部分,可以覆蓋默認設置的任何子集。
例如,以下是開發和發布配置文件的 opt 級別設置的默認值:
[profile.dev]
opt-level = 0[profile.release]
opt-level = 3
opt-level 設置控制 Rust 將應用于代碼的優化數量,范圍為 0 到 3。數字越大,將應用越多的優化會延長編譯時間。
如果正在開發并經常編譯代碼,那么希望通過更少的優化來編譯得更快,即使最終代碼運行得更慢。因此 dev 的默認選項級別為 0。當準備發布代碼時,最好花更多的時間進行編譯。只在發布模式下編譯一次,但將多次運行編譯后的程序,因此發布模式以較長的編譯時間換取運行速度更快的代碼。這就是為什么發布概要文件的默認選擇級別是 3。
可以通過在 Cargo.toml 中為其添加不同的值來覆蓋默認設置。例如,如果我們想在開發概要文件中使用優化級別 1,我們可以將這兩行添加到項目的 Cargo.toml 文件:
[profile.dev]
opt-level = 1
這段代碼覆蓋了默認設置 0。現在,當我們運行 cargo build 時,Cargo 將使用 dev 配置文件的默認值以及我們自定義的選項級別。因為我們將 opt-level 設置為 1,所以 Cargo 將應用比默認值更多的優化,但不如發布版本中那么多。
Cargo 文檔:https://doc.rust-lang.org/cargo/reference/profiles.html