如何在 Rust 中构建多工作区货物项目
How to build multi workspace cargo project in rust
我有一个多工作区 Cargo 项目。它有两个工作区,common
和 server
。 common
是一个 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 以了解带有主包的工作区的真实示例。
我有一个多工作区 Cargo 项目。它有两个工作区,common
和 server
。 common
是一个 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 以了解带有主包的工作区的真实示例。