“清单路径是虚拟清单,但此命令需要针对实际软件包运行”的意思是什么?

32

我正在尝试构建一个Rust项目(xray)。在运行cargo run时,我收到以下错误消息:

错误:清单路径D:\xray\building\xray\Cargo.toml是一个虚拟清单,但此命令需要对此工作区中的实际包进行运行。

这到底是什么意思,如何解决?我使用的是Cargo版本0.25.0和Rust版本1.24.1。

2个回答

32

你的 Cargo.toml 是一个 虚拟清单

在工作区清单中,如果存在 package 表,则工作区根目录的包将被视为普通包和工作区。如果工作区清单中不存在 package 表,则称其为 虚拟清单

使用 虚拟清单 时,与包相关的货物命令(如 cargo build)将不再可用。但是,大多数此类命令支持 --all 选项,会对工作区中所有非虚拟清单执行命令。

cargo run 不起作用,因为 Cargo 不知道要运行 什么。有两个选项:

  1. --manifest-path <PATH>:要运行的包的 Cargo.toml 的路径。
  2. -p,--package <SPEC>:要运行的包。

在你的情况下,可能是 cargo run --package xray_cli


这正是我所需要的。我有一个本地库的示例文件夹,每个子文件夹都有自己的Cargo.toml文件。这很好用。 - james-see

-3

清单文件同时包含包和工作区部分时无法正常工作。请检查 Cargo.toml 文件并从中删除 package 部分。

虚拟清单 是新的概念,请阅读文档以熟悉它。希望对您有所价值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接