1.4 Hello Cargo
在体验了手工编译和运行Rust程序之后,下面介绍Rust提供的构建工具和包管理器Cargo。使用Cargo管理Rust项目,特别是编写复杂的Rust程序,可以很方便地构建代码、下载依赖库并编译这些库。在实际项目开发中,建议一律使用Cargo来管理Rust项目。Cargo的常用命令如表1-1所示。
表1-1 Cargo常用命令
如果想查看cargo的帮助信息,可以在终端命令行窗口使用cargo -h命令。如果对某个命令不甚熟悉,可以使用cargo help <command>显示某个命令的帮助信息。
1. 创建项目
cargo可以创建两种类型的项目:可执行的二进制程序和库。
1)运行以下命令,可以创建可执行的二进制程序。
$ cargo new project_name
2)运行以下命令,可以创建库。
$ cargo new project_name --lib
下面使用Cargo创建新项目——可执行的二进制程序hello_cargo。在终端运行以下命令:
$ cargo new hello_cargo
这会生成一个名为hello_cargo的新文件夹,其中包含以下文件:
hello_cargo |- Cargo.toml |- src |- main.rs
Cargo.toml是项目数据描述文件,其中包含项目的元数据和依赖库。src/main.rs是源代码文件。编辑源代码文件,输入以下代码:
1 fn main() { 2 println!("Hello, Cargo!"); 3 }
2. 编译并运行项目
编译项目,在终端运行以下命令:
$ cargo build
查看文件夹会发现,文件结构已发生变化,其中包含以下文件:
hello_cargo |- Cargo.lock |- Cargo.toml |- src |- main.rs |- target |- debug |- hello_cargo |- ...
cargo build命令会在target/debug/目录下生成一个可执行文件hello_cargo。运行这个可执行文件,可以看到打印出“Hello, Cargo!”字符串。
$ ./target/debug/hello_cargo
也可以直接使用cargo run命令在编译的同时运行生成的可执行文件:
$ cargo run Compiling hello_cargo v0.1.0 (/hello_cargo) Finished dev [unoptimized + debuginfo] target(s) in 0.31s Running `target/debug/hello_cargo` Hello, Cargo!
3. 发布项目
项目经过严格测试,最终准备发布时,可以使用cargo build --release来优化编译项目,这时会在target/release目录下生成一个在生产环境中使用的可执行文件。
对于简单项目,Cargo可能并不比rustc提供更多的便利。但随着开发的深入,特别是对于多crate的复杂项目,Cargo将会提供极大的便利。本书后续章节的示例代码将全部使用Cargo来构建。