如何在工作空间中构建特定的程序包?

时间:2018-11-03 18:52:38

标签: rust rust-cargo

我的货运项目中有两个包裹。 Cargo.toml看起来像这样:

[workspace]
members = ["common", "server"]

当我运行cargo build --all时,它将编译所有软件包。

我只想构建common软件包。如果我做cd common并做cargo build,就可以正常工作。

但是在根目录中,如果我执行cargo build common,则生成该错误:

error: Found argument 'common' which wasn't expected, or isn't valid in this context

USAGE:
    cargo build [OPTIONS]

For more information try --help

是否可以构建特定的程序包?

2 个答案:

答案 0 :(得分:2)

您可以将--package-p标志用于cargo build

cargo build                # build packages listed in the default-members key
cargo build --all          # build all packages
cargo build --package foo  # build the package "foo"
cargo build -p foo         # ditto

答案 1 :(得分:0)

第一个答案不适用于:

error: package ID specification `foo` matched no packages

正确的做法是:

先找出pkgid

$ cd server
$ cargo pkgid
<块引用>

file:///dw/path/to/server:4.0.0-SNAPSHOT

转到工作区文件夹并运行 build

$ cd -
cargo build -p file:///dw/path/to/server:4.0.0-SNAPSHOT