Cargo

我们前面编译rust程序的时候,是直接使用rust命令的。其实,我们还可以使用官方提供的构建工具,它是一个集合了编译、包管理等等的一个工具。

Cargo 是什么

Cargo 是 Rust 官方的构建工具 + 包管理器。绝大多数 Rust 开发者都会使用它,自动完成这些工作:

  1. 编译源代码
  2. 下载、编译项目依赖库(Rust 中依赖包称为 crate
  3. 管理项目配置、构建产物

极简 Hello World 项目没有依赖,只能用到 Cargo 的编译功能,可能觉得不明显;当项目变复杂、需要引入第三方库时,Cargo 的优势会非常明显。

使用官方 rustup 安装 Rust 时,Cargo 会一并安装。

校验 Cargo 是否安装成功,终端执行:

cargo --version

使用 Cargo 创建新项目

进入你存放代码的 projects 目录,执行:

# 创建项目 hello_cargo
cargo new hello_cargo
# 进入项目文件夹
cd hello_cargoCode language: PHP (php)

Cargo 自动生成的目录结构

hello_cargo/
├── Cargo.toml       # 项目配置文件(核心)
├── .gitignore
├── .git/            # 自动初始化 Git 仓库
└── src/
    └── main.rs      # 源代码入口
Code language: PHP (php)

演示:我们先创建一个文件夹D:\rustdemo\cargodemo

cmd定位到这个目录

C:\Users>d:

D:\>cd D:\rustdemo\cargodemo

D:\rustdemo\cargodemo>cargo new hello_cargo
    Creating binary (application) `hello_cargo` package
note: see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

D:\rustdemo\cargodemo>cd hello_cargo

D:\rustdemo\cargodemo\hello_cargo>dir
 驱动器 D 中的卷是 本地磁盘
 卷的序列号是 A237-4B8D

 D:\rustdemo\cargodemo\hello_cargo 的目录

2026/07/29  16:18    <DIR>          .
2026/07/29  16:18    <DIR>          ..
2026/07/29  16:18                 8 .gitignore
2026/07/29  16:18                82 Cargo.toml
2026/07/29  16:18    <DIR>          src
               2 个文件             90 字节
               3 个目录 513,455,128,576 可用字节Code language: JavaScript (javascript)

main.rs 在 D:\rustdemo\cargodemo\hello_cargo\src目录下面

  • 如果当前目录已经是 Git 仓库,cargo new 不会重复创建 git 文件
  • 控制版本控制系统参数:cargo new --vcs=git / cargo new --vcs=none
  • 查看帮助:cargo new --help

1. Cargo.toml

项目配置文件,TOML 格式

[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2024"

[dependencies]
Code language: JavaScript (javascript)
  • [package]:项目基础配置段
    • name:项目名称
    • version:版本号
    • edition:Rust 语言版本规范
  • [dependencies]:依赖列表,后续引入第三方 crate 写在这里,当前项目无依赖所以为空。

2. src/main.rs

自动生成的源码,里面包含程序的入口Main函数

fn main() {
    println!("Hello, world!");
}
Code language: Rust (rust)

Cargo 目录规范

源代码统一放在 src/ 文件夹

项目根目录用于存放:README、协议文件、配置文件,不存放源码。

如果你之前用 rustc 写的裸项目想迁移成 Cargo 项目:

  1. 把源码移入 src/
  2. 在项目根目录执行 cargo init,自动生成 Cargo.toml

Cargo 常用编译、运行命令

cargo的命令是全平台通用

1. cargo build

编译项目,生成调试版本可执行文件

cargo build

输出示例:

   Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 2.85 secs
Code language: JavaScript (javascript)

产物路径:

  • Linux/macOS:target/debug/hello_cargo
  • Windows:target\debug\hello_cargo.exe

手动运行编译产物:

# Linux / macOS
./target/debug/hello_cargo

# Windows PowerShell / CMD
.\target\debug\hello_cargo.exe
Code language: PHP (php)

输出:Hello, world!

首次执行 cargo build 会自动生成 Cargo.lock 文件

  • 锁定所有依赖精确版本 不要手动修改 Cargo.lock,由 Cargo 自动维护

2. cargo run(最常用)

编译 和 一键运行,合并两步操作

cargo run

两种情况:

  1. 源码未修改:直接运行已有二进制,不重新编译
    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
     Running `target/debug/hello_cargo`
Hello, world!
Code language: JavaScript (javascript)
  1. 修改过源码:自动重新编译再运行
Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 0.33 secs
     Running `target/debug/hello_cargo`
Hello, world!
Code language: JavaScript (javascript)

3. cargo check

只检查代码语法、类型是否合法,不生成可执行文件

cargo check

优势:速度远快于 cargo build,开发时频繁执行用来提前发现错误。

4. cargo build --release 发布构建

生成发行优化版本,用于正式交付用户

cargo build --release

产物目录:target/release/

特点:

  • 开启编译器优化,程序运行速度更快
  • 编译耗时更长

直接运行

如果读者双击运行,可能会看不到输出,因为程序执行完毕就退出了,可能来不及看到命令行窗口

Cargo 核心命令速查表

命令作用
cargo new xxx创建新项目
cargo init在已有文件夹初始化 Cargo 项目
cargo build构建调试版本
cargo run构建并运行调试程序
cargo check检查代码可编译性,不产出二进制
cargo build --release构建优化发行版

Cargo 总结

小型程序看不出优势,项目变大后优势明显:

  1. 统一项目目录规范
  2. 自动管理第三方依赖(crate)
  3. 一套命令跨 Windows /macOS/ Linux 通用
  4. 区分调试构建(dev)与发布构建(release)

拉取别人的 Rust 开源项目标准流程:

git clone https://xxx/xxx.git
cd 项目文件夹
cargo build
cargo runCode language: PHP (php)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注