同一项目下多个可执行文件,多个子项目参照以下:
一、项目目录
bash
项目/
|-- client/
|-- main.rs
|-- Cargo.toml
|-- server/
|-- main.rs
|-- Cargo.toml
|-- Cargo.toml
二、项目公共 Cargo.toml
toml
[workspace] # 定义Rust工作区配置
members = ["server", "client"] # 列出工作区包含的所有成员包
[workspace.dependencies] # 定义工作区级别的共享依赖,供所有成员包使用
xxx = "1.2.34"
yyy = "0.1.23"
三、client/Cargo.toml
toml
[package] # 定义包(package)的基本信息
name = "client" # 包的名称,用于在Cargo生态系统中标识此包
version = "0.1.0" # 包的版本号,遵循语义化版本控制规范(SemVer)
edition = "2024" # 指定使用的Rust版本(edition)
[[bin]] # 定义可执行二进制目标(bin target),可以有多个二进制目标
name = "client" # 二进制文件的名称,编译后生成的可执行文件名
path = "main.rs" # 二进制目标的源码路径,指向main.rs文件
[dependencies] # 定义此包的依赖项
xxx.workspace = true # 引用工作区中定义的xxx依赖
yyy.workspace = true # 引用工作区中定义的yyy依赖
server/Cargo.toml
:中内容参照上述做适当修改。
四、构建可执行文件
1、cargo构建项目基础知识
bash
cargo run # 不优化,编译,运行,输出目录:target/debug/
cargo build # 不优化,编译,不运行,输出目录:target/debug/
cargo build --release # 优化,编译,不运行,输出目录:target/release/ ,生产环境
cargo check # 快速验证代码可编译性,不编译
2、构建整个项目
bash
cargo build --release
- 构建后可执行文件位置:target/release/client.exe、server.exe
3、独立构建
-p
(或--package
)参数:指定工作区。- 必须与
Cargo.toml
中[workspace]
定义的members
列表名称严格匹配 - 支持同时指定多个包(如
-p pkg1 -p pkg2
)
- 必须与
rust
cargo build -p client --release
cargo build -p server --release
- 构建后可执行文件位置:target/release/client.exe、server.exe
4、并行运行
bash
cargo run -p server # 终端1
cargo run -p client # 终端2