简介
Cargo 是 Rust 的构建系统和包管理工具。
主要负责三个工作:
- 构建
build代码 - 下载你代码 依赖
dependencies的包装箱crate - 编译
你的源码和包装箱crate。
查看cargo是否被正确安装
cargo --version
项目的目录结构
要使用cargo工具,项目的目录结构需要如下组织:
project_name
|- src // 放置源文件的目录
|- main.rs / lib.rs // 源文件
|- Cargo.toml // Cargo的配置文件
Cargo.toml
toml
- 要使用cargo工具,必须在项目的根目录下建有其配置文件。
- TOML(Tom’s Obvious Minimal Language)格式。简单理解就是ini的进化版。
注意: Cargo.toml的C是大写
文件预览
Cargo.toml
[package] // 表明下面的语句用来配置一个包
name = "project_name" // 项目名
version = "0.0.1" // 版本
authors = ["Your name <you@example.com>"] // 作者
[dependencies] // 依赖 (如果有)
rand = “^0.3.0” // 依赖的外部包装箱,以及其需要版本
包装箱 crate
- 项目除了自己编写的源码外,还能依赖
dependencises外部包装箱crate以及其 所要求的版本。 - 包装箱
crate是一个 Rust 代码的包。类似于其他语言的库library或者package。
包装箱的版本
Cargo理解语义化版本,它是一个编写版本号的标准。
- “^0.3.0” 代表”任何兼容0.3.0的版本”
- “0.3.0” 代表”^0.3.0的简写”
- “=0.3.0” 代表”只使用0.3.0的版本”
- 也可以指定版本范围
具体细节可以参考 cargo文档。
Cargo.lock
依赖”^0.3.0”获得了兼容的最新版本,如0.3.14。但过了一段时间后推出了兼容的0.3.15版本修复了0.3.14的bug的同时,却包含着破坏现有代码的回归缺陷(regression)。这可如何是好?
Cargo.lock 闪亮登场
当你第一次build项目时,Cargo 会查找所有符合你的 依赖dependencies 要求的版本,并记录到到 Cargo.lock 文件里。当你在未来再次
build 你的项目时,Cargo 会注意到 Cargo.lock 的存在,并接着使用 Cargo.lock 中指定的版本而不是再次去做 查明和记录版本 的工作。这让你有了一个可重复的自动构建。换句话说,项目会保持在依赖0.3.14的版本。直到我们显式的在 Cargo.toml 中升级。
文件预览
Cargo.lock
...
[[package]]
name = "libc"
version = "0.2.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "rand"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
...
Cargo的构建(build)和运行(run)
在创建好项目的 目录结构 和 Cargo.toml 后,就可以使用cargo来构建和运行项目了。
构建 build
在 项目根目录 下输入 cargo build 就可构建项目(编译项目),
在 ./target/debug/project_name 中找到编译后的 可执行文件(exe) 运行。
cargo build
cargo build 默认是以 debug 方式编译,在项目 release 时,使用 --release 参数编译最终版本。
cargo build --release
运行 run
也可以在 项目根目录 下使用 cargo run 一个步骤来代替上述的 cargo build + run exe 两个步骤。
cargo run
Cargo的创建(new)
除了可以手动创建 目录结构 和 Cargo.toml 外,可以使用 Cargo new 来自动创建。在执行此命令的目录下创建名为project_name的目录,包含Cargo.toml,自动创建了 src/main.rs 。并且,还自动创建了git的仓库。
cargo new project_name --bin
其中 --bin 表示是新建一个可执行文件。
本文介绍了Rust语言中的Cargo工具,它是Rust的构建系统和包管理工具。文章详细解释了Cargo如何构建代码、下载依赖项并进行编译。此外,还介绍了Cargo.toml配置文件的作用以及Cargo.lock如何确保构建的一致性。
3497





