cargo 指令
Cargo.toml文件
示例:
# 项目元数据
[package]
name = "image_processor"
version = "1.2.0"
edition = "2021"
authors = ["Dev Team <dev@example.com>"]
description = "Image processing library"
license = "MIT"
repository = "https://github.com/dev/image_processor"
# 依赖管理 - 运行时依赖
[dependencies]
# 固定版本
rand = "0.8.5"
# 版本范围
serde = ">=1.0, <2.0"
# 启用特性
serde_json = { version = "1.0", features = ["derive"] }
# 本地路径依赖
local_lib = { path = "../local_lib" }
# Git 仓库依赖
ui = { git = "https://github.com/user/ui", branch = "main" }
# 依赖管理 - 仅开发/测试时使用
[dev-dependencies]
criterion = "0.4"
# 构建脚本依赖
[build-dependencies]
cc = "1.0"
# 特性配置
[features]
default = ["simd"]
simd = ["packed_simd"]
# 编译优化
[profile.release]
# 优化级别(0-3,数字越大优化越强)
opt-level = 3
# 链接时优化(提升性能,但增加编译时间)
lto = true
# 工作区配置 - 管理多包项目
[workspace]
members = [ # 子项目路径
"core_lib",
"cli_tool",
"web_api"
]
exclude = [ # 排除目录
"examples",
"tests"
]
cargo build
常用参数:
参数 | 作用 | 典型场景 |
---|---|---|
--release | 生成优化后的发布版本(启用编译器优化 -O ,输出至 target/release/ ) | 生产环境部署 |
--debug | 显式生成调试版本(默认行为,包含调试符号和未优化代码) | 开发调试阶段 |
--target <triple> | 指定编译目标平台(如 x86_64-unknown-linux-gnu ) | 跨平台编译(如 Windows/Linux) |
-p <package> | 仅构建指定包(适用于多包项目) | 微服务项目中单独编译核心模块 |
--features <features> | 启用特定特性(需在 Cargo.toml 定义,如 --features "logging" ) | 按需启用功能模块 |
--profile <name> | 使用自定义构建配置(如 dev /release 或自定义 profile) | 调整编译优化级别或调试信息 |
--verbose | 显示详细编译过程(如 rustc 调用参数) | 调试编译错误 |
--no-default-features | 禁用包的默认特性 | 避免依赖冲突 |
--target-dir <dir> | 指定编译输出目录(默认 target/ ) | 多环境并行构建 |
--manifest-path <path> | 指定 Cargo.toml 路径(非默认位置时使用) | 子项目或复杂仓库结构 |
补充说明
- 构建配置优化
在
Cargo.toml
中可通过[profile]
自定义编译参数,例如:
[profile.release]
opt-level = 3 # 最高优化级别
lto = true # 链接时优化
codegen-units = 1 # 减少并行编译单元以提升性能
- 特性依赖管理
在
Cargo.toml
中定义特性组合:
[features]
default = ["logging", "metrics"]
secure = ["bcrypt"]
环境变量控制 通过
RUSTFLAGS
传递编译器参数:RUSTFLAGS="-C target-cpu=native" cargo build --release # 针对当前 CPU 优化
常用命令示例
场景 | 命令示例 |
---|---|
开发环境快速编译 | cargo build |
生产环境优化编译 | cargo build --release |
跨平台编译(ARM 架构) | cargo build --target aarch64-unknown-linux-gnu |
仅构建测试模块 | cargo build --package my_tests --lib |
生成.lock文件
安装cargo.toml
依赖,并生成.lock文件:
Cargo.lock
:记录依赖项的精确版本,用于依赖锁定。
生成二进制文件
--target-dir <dir>
: 指定编译输出目录(默认 target/
), 生成目录结构如下:
target/
:编译输出目录,包含二进制文件、调试符号等。target/debug/
:调试版本(默认),包含未优化的二进制文件和调试符号。target/release/
:发布版本,包含优化后的二进制文件,大小更小。target/<target>/
:针对特定目标平台编译的文件。
生成的是什么?
目标文件:src/lib.rs
、src/main.rs
、src/components.lib.rs
等
生成的二进制文件:(调试版本)
target/debug/**/**/**/**.rlib、dylib等
:调试版本(未优化)
无法找到一一对应的wasm文件,生成的是.rlib
文件