跳到主要内容

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 路径(非默认位置时使用)子项目或复杂仓库结构

补充说明

  1. 构建配置优化Cargo.toml 中可通过 [profile] 自定义编译参数,例如:
[profile.release]
opt-level = 3 # 最高优化级别
lto = true # 链接时优化
codegen-units = 1 # 减少并行编译单元以提升性能
  1. 特性依赖管理Cargo.toml 中定义特性组合:
[features]
default = ["logging", "metrics"]
secure = ["bcrypt"]
  1. 环境变量控制 通过 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.rssrc/main.rssrc/components.lib.rs

生成的二进制文件:(调试版本)

  • target/debug/**/**/**/**.rlib、dylib等:调试版本(未优化)

无法找到一一对应的wasm文件,生成的是.rlib文件