use std::env;
use cargo::core::Workspace;
-use cargo::ops::{self, CompileOptions, MessageFormat};
+use cargo::ops::{self, CompileOptions, MessageFormat, Packages};
use cargo::util::important_paths::{find_root_manifest_for_wd};
use cargo::util::{CliResult, Config};
flag_bench: Vec<String>,
flag_locked: bool,
flag_frozen: bool,
+ flag_all: bool,
}
pub const USAGE: &'static str = "
Options:
-h, --help Print this message
-p SPEC, --package SPEC ... Package to build
+ --all Build all packages in the workspace
-j N, --jobs N Number of parallel jobs, defaults to # of CPUs
--lib Build only this package's library
--bin NAME Build only the specified binary
current package is built. For more information on SPEC and its format, see the
`cargo help pkgid` command.
+All packages in the workspace are built if the `--all` flag is supplied. The
+`--all` flag may be supplied in the presence of a virtual manifest.
+
Compilation can be configured via the use of profiles which are configured in
the manifest. The default profile for this command is `dev`, but passing
the --release flag will use the `release` profile instead.
let root = find_root_manifest_for_wd(options.flag_manifest_path, config.cwd())?;
+ let spec = if options.flag_all {
+ Packages::All
+ } else {
+ Packages::Packages(&options.flag_package)
+ };
+
let opts = CompileOptions {
config: config,
jobs: options.flag_jobs,
features: &options.flag_features,
all_features: options.flag_all_features,
no_default_features: options.flag_no_default_features,
- spec: ops::Packages::Packages(&options.flag_package),
+ spec: spec,
mode: ops::CompileMode::Build,
release: options.flag_release,
filter: ops::CompileFilter::new(options.flag_lib,