cargo 介绍
Cargo 是 Rust 的构建系统和包管理器,它会构建代码、下载代码所依赖的库以及构建这些库。
Cargo 一般随 Rust 一起安装,如果是通过其他方式安装,需要检查是否可用。
使用 Cargo 创建项目
现在使用 Cargo 创建一个新的 helloworld 项目,对比一下与之前的 helloworld 有什么不一样的地方。
在项目文件夹下执行:
cd ~/projects
cargo new hello_cargo
cd hello_cargo
这样就创建了一个名为 hello_cargo 的新目录,我们将项目命名为hello_cargo,Cargo 在同名目录中创建其文件。
进入hello_cargo目录并列出文件。就会看到 Cargo 为我们生成了两个文件和一个目录:一个 Cargo.toml 文件和一个 src 目录,其中包含一个 main.rs 文件。
它还初始化了一个新的 Git 存储库以及一个 .gitignore 文件。cargo new
如果您在现有的 Git 存储库中运行,则不会生成 Git 文件,可以使用cargo new --vcs=git
.
Cargo.toml 是清单文件,该文件采用TOML(Tom’s Obvious, Minimal Language)格式,这是 Cargo 的配置格式。
现在打开src/main.rs看看:
文件名:src/main.rs
fn main() {
println!("Hello, world!");
}
Cargo 生成了一个“Hello, world!” 为您准备的程序,与我们之前的项目与 Cargo 生成的项目的不同之处在于 Cargo 将代码放在了src 目录中,而我们在顶层目录中有一个Cargo.toml配置文件。
Cargo 希望源文件位于src目录中,顶级项目目录仅用于 README 文件、许可证信息、配置文件以及与代码无关的任何其他内容。
编译和运行项目
编译
$ cargo build
Compiling hello_cargo v0.1.0 (/home/mshing/projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 1.38s
运行
$ ./target/debug/hello_cargo
Hello, world!
这样运行方式和之前一样,只是存放路径不一致。
第一次运行cargo build
也会导致 Cargo 在顶层创建一个新文件:Cargo.lock。该文件跟踪项目中依赖项的确切版本,建议手动修改该文件。
进阶
我们刚刚构建了一个项目cargo build
并使用 运行它 ./target/debug/hello_cargo
,但我们也可以使用它cargo run
来编译代码,然后在一个命令中运行生成的可执行文件
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Running `target/debug/hello_cargo`
Hello, world!
请注意,这次我们没有看到表明 Cargo 正在编译的输出 hello_cargo
。
Cargo 发现文件没有改变,所以它只运行二进制文件。
如果修改了源代码,Cargo 会重新编译然后再运行:
$ cargo run
Compiling hello_cargo v0.1.0 (/home/mshing/projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.33s
Running `target/debug/hello_cargo`
Hello, 中国!
Cargo 还提供了一个名为cargo check
. 此命令快速检查代码以确保它可以编译但不会生成可执行文件:
$ cargo check
Checking hello_cargo v0.1.0 (/home/mshing/projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.09s
有关 Cargo 的更多信息,请查看其文档。