如何在工作区中构建特定包?
How can I build a specific package in a workspace?
我的 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
是否可以构建特定的包?
您可以使用 --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
第一个答案不适用于:
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
您可以使用您的子项目Cargo.toml
中使用的名称,例如:
# proj1/Cargo.toml
[package]
name = "project-1"
如果你运行:
cargo build -p proj1
您将获得:
error: package ID specification `proj1` matched no packages
所以不要使用文件夹名称并使用包名称:
cargo build -p project-1
我的 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
是否可以构建特定的包?
您可以使用 --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
第一个答案不适用于:
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
您可以使用您的子项目Cargo.toml
中使用的名称,例如:
# proj1/Cargo.toml
[package]
name = "project-1"
如果你运行:
cargo build -p proj1
您将获得:
error: package ID specification `proj1` matched no packages
所以不要使用文件夹名称并使用包名称:
cargo build -p project-1