为什么Rust用`cargo build --release`然后`cargo run`再次编译我的项目?

问题描述 投票:4回答:1

Rust documentation告诉我们cargo build在编译后创建了一个二进制文件,我们可以用cargo run执行它。如果在执行cargo run命令后发现任何更改,cargo build将再次编译代码。它还说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
compilation rust rust-cargo
1个回答
4
投票

cargo run尝试运行项目的调试版本。请改用cargo run --releasecargo 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
© www.soinside.com 2019 - 2024. All rights reserved.