簡體   English   中英

為什么Rust會先用`cargo build --release`再加上`cargo run`再次編譯我的項目?

[英]Why does Rust compile my project again with `cargo build --release` followed by `cargo run`?

Rust文檔告訴我們, cargo build會在編譯后創建一個二進制文件,我們可以通過cargo run執行該文件。 如果在執行cargo build命令后發現任何更改, cargo run將再次編譯該代碼。 它還說, cargo build --release命令創建最終程序,它將運行得更快。

我的問題是,為什么在我進行cargo build --release時會編譯代碼,這很好。 但是,當我執行cargo run時,即使此后未更改任何代碼,它仍會再次編譯代碼。 它可以正常進行cargo build ,然后進行cargo run即與前一個命令一起編譯一次。

naufil@naufil-Inspiron-7559:~/Desktop/rust/20April/variables$ cargo build
   Compiling variables v0.1.0 (/home/naufil/Desktop/rust/20April/variables)
    Finished dev [unoptimized + debuginfo] target(s) in 0.35s
naufil@naufil-Inspiron-7559:~/Desktop/rust/20April/variables$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.02s
     Running `target/debug/variables`
Hello, world! 6
naufil@naufil-Inspiron-7559:~/Desktop/rust/20April/variables$ cargo build --release
   Compiling variables v0.1.0 (/home/naufil/Desktop/rust/20April/variables)
    Finished release [optimized] target(s) in 0.34s
naufil@naufil-Inspiron-7559:~/Desktop/rust/20April/variables$ cargo run
   Compiling variables v0.1.0 (/home/naufil/Desktop/rust/20April/variables)
    Finished dev [unoptimized + debuginfo] target(s) in 0.23s
     Running `target/debug/variables`
Hello, world! 6

cargo run嘗試運行項目的調試版本。 請改用cargo run --release cargo build --release然后是cargo run --release將不會再次編譯。

Cargo維護兩組幾乎完全獨立的構建工件:

  • 調試版本,存儲在target/debug/
  • 發布版本,存儲在target/release/

所有這些子命令都允許您指定使用哪些配置文件(不一定是詳盡的列表):

  • 默認值:debug (使用--release切換到發布模式)
    • cargo build
    • cargo run
    • cargo test
    • cargo check
  • 默認值:release (使用--debug切換到調試模式)
    • cargo bench
    • cargo install

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM