我正在尝试构建一个Rust项目(xray)。在运行cargo run
时,我收到以下错误消息:
错误:清单路径
D:\xray\building\xray\Cargo.toml
是一个虚拟清单,但此命令需要对此工作区中的实际包进行运行。
这到底是什么意思,如何解决?我使用的是Cargo版本0.25.0和Rust版本1.24.1。
我正在尝试构建一个Rust项目(xray)。在运行cargo run
时,我收到以下错误消息:
错误:清单路径
D:\xray\building\xray\Cargo.toml
是一个虚拟清单,但此命令需要对此工作区中的实际包进行运行。
这到底是什么意思,如何解决?我使用的是Cargo版本0.25.0和Rust版本1.24.1。
你的 Cargo.toml
是一个 虚拟清单。
在工作区清单中,如果存在
package
表,则工作区根目录的包将被视为普通包和工作区。如果工作区清单中不存在package
表,则称其为 虚拟清单。使用 虚拟清单 时,与包相关的货物命令(如
cargo build
)将不再可用。但是,大多数此类命令支持--all
选项,会对工作区中所有非虚拟清单执行命令。
cargo run
不起作用,因为 Cargo 不知道要运行 什么。有两个选项:
--manifest-path <PATH>
:要运行的包的 Cargo.toml
的路径。-p,--package <SPEC>
:要运行的包。在你的情况下,可能是 cargo run --package xray_cli
。
清单文件同时包含包和工作区部分时无法正常工作。请检查 Cargo.toml 文件并从中删除 package 部分。
虚拟清单 是新的概念,请阅读文档以熟悉它。希望对您有所价值。