“Hello,Cargo”
Cargo是用来管理Rust工程的工具。Cargo当前还没到1.0版本,仍然在开发进程中。但是,它已经足够用在许多Rust项目上了,建议Rust工程从一开始就使用Cargo。
Cargo负责做三件事:构建你的代码、下载代码的依赖项和构建这些依赖项。刚开始,你的程序没有任何依赖项,所以只用到Cargo的第一个功能。紧接着,我们会逐渐增加相应的功能。
如果你是通过官方安装器安装Rust的话,你也会自动安装Cargo的。
转向使用Cargo
让我们使用Cargo来创建”Hello,World”
charies:rust weichuang$ Cargo new Hello_World
charies:rust weichuang$ ls
Hello_World
charies:rust weichuang$ cd Hello_World
charies:Hello_World weichuang$ ls
Cargo.toml src
charies:Hello_World weichuang$
Cargo要求你将你的源代码放在src
这个目录下。与src处于同一级的文件还有READMEs、证书信息和其它与代码相关的代码。Cargo帮助我们让工程变的更加整洁和完美。
下面我们来配置Cargo.toml
这个文件。用vim打开该文件,里面内容如下:
[package]
name = "Hello_World"
version = "0.1.0"
authors = ["WflytoC <wcshinestar@gmail.com>"]
Cargo.toml
这个文件是以TOML的格式来写的。TOML与INI有的相似,但它有额外的好处。
将我们之前创建的main.rs
文件放在src
文件夹中,然后运行(注意,要在Rust工程目录中):
编译程序:
charies:Hello_World weichuang$ Cargo build
Compiling Hello_World v0.1.0 (file:///Users/weichuang/Desktop/rust/Hello_World)
运行程序:(可以直接运行:./target/debug/Hello_World)
charies:Hello_World weichuang$ ls
Cargo.lock Cargo.toml src target
charies:Hello_World weichuang$ cd target
charies:target weichuang$ ls
debug
charies:target weichuang$ cd debug
charies:debug weichuang$ ls
Hello_World deps native
Hello_World.dSYM examples
build libHello_World.rlib
charies:debug weichuang$ ./Hello_World
Hello,World
在上面,我们通过Cargo build
来构建我们的工程,通过./target/debug/Hello_World
来运行它。当然,我们可以直接使用一步Cargo run
即可。
charies:Hello_World weichuang$ Cargo run
Running `target/debug/Hello_World`
Hello,World
当我们的工程准备发行的时候,你可以使用Cargo build --release
来编译你的工程。
charies:Hello_World weichuang$ Cargo build --release
Compiling Hello_World v0.1.0 (file:///Users/weichuang/Desktop/rust/Hello_World)
charies:Hello_World weichuang$ ls
Cargo.lock Cargo.toml src target
你会发现使用Cargo build --release
会创建一个新的文件Cargo.lock
,这个文件被Cargo使用来跟踪你应用中的依赖项的。
到现在,我们已经成功地使用Cargo来构建Hello_World工程了。尽管这个程序很简单,但是你在这个程序中已经使用了你即将在Rust生涯中要使用的工具。
一个新的工程
每次你开始一个新的工程的时候,Cargo有能力来创建一个Rust的工程目录骨架。
使用Cargo创建一个新的工程,使用Cargo new
charies:rust weichuang$ Cargo new wind --bin
我们传递一个--bin
参数的目的是直接创建一个可执行的应用,而不是一个库。可执行文件一般叫做二进制文件。
我们来看一下Cargo为我们所创建的文件: