为什么 Rust 使用 `cargo build --release` 后跟 `cargo 运行` 再次编译我的项目?
Why does Rust compile my project again with `cargo build --release` followed by `cargo run`?
Rust documentation告诉我们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
切换到release模式)
cargo build
cargo run
cargo test
cargo check
- 默认:发布(使用
--debug
切换到调试模式)
cargo bench
cargo install
Rust documentation告诉我们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
切换到release模式)cargo build
cargo run
cargo test
cargo check
- 默认:发布(使用
--debug
切换到调试模式)cargo bench
cargo install