У меня есть грузовая рабочая область с одной библиотекой «./raytracing» и одним двоичным файлом «./cli». Два члена рабочей области имеют разные зависимости.
./raytracing/Cargo.toml:
[package]
name = "raytracer"
version = "0.1.0"
edition = "2021"
[dependencies]
rand = "0.8.5"
./cli/Cargo.toml:
[package]
name = "cli"
version = "0.1.0"
edition = "2021"
[dependencies]
raytracer = {path = "../raytracer"}
rand = "0.8.5"
rand_xorshift = "0.3.0"
Родительский каталог Cargo.toml (./Cargo.toml)
[package]
edition = "2021"
name = "raytracing"
version = "0.1.0"
[workspace]
members = [
"raytracer",
"cli",
]
[[bin]]
path = "cli/src/main.rs"
name = "cli"
Компиляция пакетов raytracer и cli с помощью cargo build -p работает, однако в VSCode rust-analyzer жалуется на мои зависимости в пакете ./cli, когда я импортирую их в main.rs: Ошибка
С вашей текущей настройкой у вас фактически есть два двоичных файла, скомпилированных из одного и того же исходного файла: cli и трассировка лучей. трассировка лучей не объявляет никаких [dependencies]
, поэтому, конечно, вы получаете сообщение об ошибке при попытке скомпилировать это. Вы не объяснили, чего вы пытаетесь достичь, поэтому я не могу сказать вам, как правильно решить эту проблему. Как правило, вы можете сделать две вещи:
./Cargo.toml
все, кроме раздела [workspace]
. (нормальный)./cli/Cargo.toml
и переместите его раздел [dependencies]
в ./Cargo.toml
. (немного странно)
Сделать корневой пакет виртуальным было правильным решением. Спасибо.