目录
- 引言
- 一、Cargo
- 二、创建Cargo项目
- [三、构建 Cargo 项目](#三、构建 Cargo 项目)
- [四、构建和运行 cargo 项目](#四、构建和运行 cargo 项目)
- [五、cargo check](#五、cargo check)
- [六、cargo bulid两种配置](#六、cargo bulid两种配置)
- 总结
引言
在现代软件开发中,构建系统和包管理工具是提高开发效率和项目管理能力的重要工具。Rust 语言的官方构建系统和包管理工具是 Cargo,它为 Rust 开发者提供了强大的功能,包括构建代码、下载依赖库、管理项目依赖等。Cargo 的使用贯穿了 Rust 项目的整个生命周期,从项目的创建、构建、运行到发布,Cargo 都扮演着不可或缺的角色。本文将详细介绍 Cargo 的基本功能和高级用法,帮助开发者更好地理解和使用这一工具。
一、Cargo
Cargo
是 Rust的构建系统
和包管理工具
- 构建代码、下载依赖的库、构建这些库...
安装 Rust 的时候会安装 Cargo
输入以下验证cargo安装
cargo --version

二、创建Cargo项目
cargo new hello_cargo

进入项目,用VSCode打开。
可以看到 hello_cargo 的项目目录。因为我的 VSCode 安装了 rust 插件,所以自动编译了,生成了以下两个文件。正常情况下,不执行命令是不会生成的。
创建项目:cargo new hello_cargo
项目名称也是 hello_cargo
会创建一个新的目录 hello_cargo
- Cargo.toml
src 目录
main.rs - 初始化了一个新的 Git 仓库
.gitignore
可以使用其它的 VCS 或不使用 VCS: cargo new 的时候使用--vcs
这个 flag
①Cargo.toml
TOML (Tom's Obvious, Minimal Language) 格式
,是 Cargo 的配置格式 [pacakge] ,是一个区域标题
,表示下方内容是用来配置包 (package) 的。
-name
,项目名
-version
,项目版本
-authors
,项目作者 如果你没有在 Cargo.toml 中指定 authors 字段,Cargo 会默认使用空值。作者信息会以Name <email@example.com>
的格式书写,我这里是没有写的。
-edition
,使用的Rust 版本
[dependencies]
,另一个区域的开始它会列出项目的依赖项,在 Rust 里面,代码的包称作 crate。
②src/main.rs
- cargo 生成的
main.rs
在 src 目录下 - 而
Cargo.toml
在项目顶层下 源代码
都应该在src 目录
下- 顶层目录可以放置:
README
、许可信息
、配置文件
和其它与程序源码无关的文件
- 如果创建项目时没有使用 cargo,也可以把项目转化为使用 cargo
把源代码文件移动到 src下
创建Cargo.toml
并填写相应的配置
三、构建 Cargo 项目
cargo build
- 创建可执行文件:
target/debug/hello_cargo
或 - 运行可执行文件::
/target/debug/hello_cargo
或.\target\debug\hello_cargo.exe (Windows)
- 第一次运行 cargo build 会在
顶层目录
生成cargo.lock 文件
该文件负责追踪项目依赖的精确版本
不需要手动修改该文件
(一) cargo build 的高级用法
①指定构建目标
可以使用 --target 选项
指定目标平台。例如,构建为 ARM 架构:
cargo build --target armv7-unknown-linux-gnueabihf
②并行构建
cargo build 默认会并行编译依赖项
。可以通过设置环境变量 RUSTFLAGS
来控制并行级别。例如:
RUSTFLAGS="--jobs 4" cargo build
四、构建和运行 cargo 项目
cargo run
cargo run,编译代码
+ 执行结果
如果之前编译成功过,并且源码没有改变,那么就会直接运行二进制文件
第一次执行 cargo run 是编译结束运行。第二次源码没有改变,会直接执行exe文件。
(一) cargo run 的高级用法
①传递参数
可以在 cargo run 后直接传递参数
给可执行文件。例如:
cargo run arg1 arg2
②指定运行环境
可以通过设置环境变量
来指定运行环境
。例如:
RUST_BACKTRACE=1 cargo run
五、cargo check
cargo check
cargo check,检查代码,确保能通过编译,但是不产生任何可执行文件
cargo check 要比 cargo build 快得多
编写代码的时候可以连续反复的使用
cargo check 检查代码,周期性调用,提高效率
(一) cargo check 的高级用法
①指定包进行检查
如果项目中有多个包,可以使用--package
或 -p 选项
指定特定的包进行检查。例如:
cargo check --package my_package
②检查特定目标文件
可以使用 --lib
、--bin
、--example
等选项指定特定的目标文件进行检查。例如:
cargo check --bin my_binary
六、cargo bulid两种配置
为发布构建
cargo build --release
编译时会进行优化, 默认使用 03 优化级别
代码会运行的更快,但是编译时间更长
发布构建的目录位于 target/release 目录下,大小通常会比调试构建的小很多,并且运行速度更快。
而不是 target/debug 生成可执行文件
两种配置:
一个开发
一个正式发布
总结
Cargo 是 Rust 的核心构建系统和包管理工具,贯穿项目从创建到发布的整个生命周期。通过 cargo new 可快速初始化项目,cargo build 和 cargo run 分别用于构建和运行代码,cargo check 提供快速编译检查,而 cargo build --release 则用于生成优化后的发布版本。掌握这些功能,可以显著提升 Rust 项目的开发效率和管理能力。