【问题标题】:How to build multi workspace cargo project in rust如何在 rust 中构建多工作空间货物项目
【发布时间】:2018-11-04 18:04:07
【问题描述】:

我有多工作区 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"

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

【问题讨论】:

  • 我认为您应该只将[workspace] 放在根清单中,因此删除[package][dependencies],只将其放在servercommon 内的清单中。
  • @Stargateur - 你是对的。这样可行。如果你回答了这个问题,我会接受你的回答。

标签: rust rust-cargo


【解决方案1】:

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

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

请参阅main Cargo.toml file of Rocket 了解虚拟工作空间的真实示例,Tokio 了解具有主包的工作空间的真实示例。

【讨论】:

    猜你喜欢
    • 2017-08-09
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2017-10-25
    • 2018-10-17
    • 2012-05-28
    相关资源
    最近更新 更多