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

时间:2018-11-03 17:11:15

标签: rust rust-cargo

我有多工作区货运项目。它有两个工作区,commonservercommonlib项目,而服务器是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"

如何构建项目。我想念的是什么?

1 个答案:

答案 0 :(得分:2)

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

解决方案是仅忽略[package]部分,而仅包含[workspace]。这将配置一个虚拟工作区-一个仅作为成员包容器的工作区,而不会构建包本身。

有关虚拟工作区的真实示例,请参见main Cargo.toml file of Rocket;有关具有主程序包的工作区的真实示例,请参见Tokio