如何在 Rust 中构建多工作区货物项目

How to build multi workspace cargo project in rust

我有一个多工作区 Cargo 项目。它有两个工作区,commonservercommon 是一个 lib 项目,服务器是一个 bin 项目。

项目在Github的位置是here.

下面是项目结构。

.
├── Cargo.toml
├── common
│   ├── Cargo.toml
│   └── src
│       └── lib.rs
├── README.md
└── server
    ├── Cargo.toml
    └── src
        └── main.rs

4 directories, 6 files

而./Cargo.toml文件的文件内容是

[package]
name = "multi_module_cargo_project"
version = "0.1.0"
authors = ["rajkumar"]

[workspace]
members = ["common", "server"]

[dependencies]

当我运行命令cargo build --all:

error: failed to parse manifest at `/home/rajkumar/Coding/Rust/ProgrammingRust/multi_module_cargo_project/Cargo.toml`

Caused by:
no targets specified in the manifest
either src/lib.rs, src/main.rs, a [lib] section, or [[bin]] section must be present

所以我在下面添加了 Cargo.toml 但仍然无法构建项目。

[[bin]]
name = "server/src/main.rs"

如何构建项目。我错过了什么?

您在 Cargo.toml 主文件中包含了一个 [package] 部分。此部分表示除了工作区中的包之外,您还想构建一个主包。但是,您没有任何主包的源文件,因此 Cargo 抱怨。

解决方法是简单地省略 [package] 部分,只包含 [workspace]。这配置了一个 虚拟工作空间 – 一个仅作为成员包容器的工作空间,但它本身并不构建包。

请参阅 main Cargo.toml file of Rocket for a real-world example of a virtual workspace, and Tokio 以了解带有主包的工作区的真实示例。