Right now I have a Cargo workspace with three members.
[workspace]
members = [
"foo",
"bar",
"baz",
]
If I run cargo run
in the root directory, I get this error:
error: manifest path
/home/lukas/dev/mahboi/Cargo.toml
is a virtual manifest, but this command requires running against an actual package in this workspace
That makes sense. I can run cargo run -p foo
and it works. But the thing is: foo
is the only crate that is executable and I will execute it very often, so it would be nice if I could just run cargo run
and execute it.
I tried to use the default-members
key, but this didn't help:
default-members = ["foo"]
Is there another way to tell Cargo that cargo run
should execute the foo
crate (equivalent to running cargo run
in the foo/
subdirectory)? I would also accept answers that make the root crate non virtual (i.e. add a [package]
key).
cargo run -p foo
to use packagefoo
every time you runcargo run
. There's also the option to have your top-level folder be both a crate, and a workspace for nested crates, but I didn't go that route, as it adds more confusion. I'd also like to see me being able to set the default binary crate at the virtual manifest level. – JeanMertz