Cargo workspaces 工作空间

发布时间: 更新时间: 总字数:302 阅读时间:1m 作者: IP上海 分享 网址

Cargo 工作空间(workspaces)用来管理多个相互关联且需要协同开发的 crate,组织大的工程。

介绍

实现方式:通过共享一个 Cargo.lock 和输出文件夹的包

创建工作空间

  • 创建目录和 Cargo.toml
$ mkdir tmp & cd tmp
$ touch Cargo.toml
$ cat Cargo.toml
[workspace]
members = [
    "my_binary_crate1",
    "my_lib_create1"
]
  • 创建子项目
cargo new my_binary_crate1
cargo new my_lib_create1 --lib
  • 构建工作空间
cargo build

会生成 targetCargo.lock 文件

  • 为 my_binary_crate1 添加 my_lib_create1 依赖:
$ cd my_binary_crate1
$ cat Cargo.toml
...
[dependencies]
my_lib_create1 = { path = "../my_lib_create1"}
  • 运行二进制
cd tmp
cargo run -p my_binary_crate1

说明:

  • 工作空间只有一个 Cargo.lock 文件,在工作空间根目录
    • 保证工作空间所有 crate 使用的依赖的版本相同
    • 工作空间所有 crate 相同兼容
    • 子项目引用包需要在自己的 Cargo.toml 中引入
    • 在工作空间执行 cargo test 会依次执行每一个子项目的测试
      • 指定子项目测试:cargo test -p my_binary_crate1
    • 发布时需要在具体的子目录手动执行 cargo publish
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数