我有多工作区货运项目。它有两个工作区,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"
如何构建项目。我想念的是什么?
答案 0 :(得分:2)
您在主[package]
文件中包含了Cargo.toml
部分。本部分指示您除了工作空间中的软件包之外,还希望构建一个主软件包。但是,您没有主软件包的任何源文件,因此Cargo抱怨。
解决方案是仅忽略[package]
部分,而仅包含[workspace]
。这将配置一个虚拟工作区-一个仅作为成员包容器的工作区,而不会构建包本身。
有关虚拟工作区的真实示例,请参见main Cargo.toml
file of Rocket;有关具有主程序包的工作区的真实示例,请参见Tokio。