mirror of
https://github.com/rust-lang/cargo.git
synced 2025-09-25 11:14:46 +00:00
347 lines
15 KiB
Plaintext
347 lines
15 KiB
Plaintext
CARGO-RUSTC(1)
|
|
|
|
NAME
|
|
cargo-rustc - Compile the current package, and pass extra options to the
|
|
compiler
|
|
|
|
SYNOPSIS
|
|
cargo rustc [options] [-- args]
|
|
|
|
DESCRIPTION
|
|
The specified target for the current package (or package specified by -p
|
|
if provided) will be compiled along with all of its dependencies. The
|
|
specified args will all be passed to the final compiler invocation, not
|
|
any of the dependencies. Note that the compiler will still
|
|
unconditionally receive arguments such as -L, --extern, and
|
|
--crate-type, and the specified args will simply be added to the
|
|
compiler invocation.
|
|
|
|
See <https://doc.rust-lang.org/rustc/index.html> for documentation on
|
|
rustc flags.
|
|
|
|
This command requires that only one target is being compiled when
|
|
additional arguments are provided. If more than one target is available
|
|
for the current package the filters of --lib, --bin, etc, must be used
|
|
to select which target is compiled.
|
|
|
|
To pass flags to all compiler processes spawned by Cargo, use the
|
|
RUSTFLAGS environment variable
|
|
<https://doc.rust-lang.org/cargo/reference/environment-variables.html>
|
|
or the build.rustflags config value
|
|
<https://doc.rust-lang.org/cargo/reference/config.html>.
|
|
|
|
OPTIONS
|
|
Package Selection
|
|
By default, the package in the current working directory is selected.
|
|
The -p flag can be used to choose a different package in a workspace.
|
|
|
|
-p spec, --package spec
|
|
The package to build. See cargo-pkgid(1) for the SPEC format.
|
|
|
|
Target Selection
|
|
When no target selection options are given, cargo rustc will build all
|
|
binary and library targets of the selected package.
|
|
|
|
Binary targets are automatically built if there is an integration test
|
|
or benchmark being selected to build. This allows an integration test to
|
|
execute the binary to exercise and test its behavior. The
|
|
CARGO_BIN_EXE_<name> environment variable
|
|
<https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-crates>
|
|
is set when the integration test is built so that it can use the env
|
|
macro <https://doc.rust-lang.org/std/macro.env.html> to locate the
|
|
executable.
|
|
|
|
Passing target selection flags will build only the specified targets.
|
|
|
|
Note that --bin, --example, --test and --bench flags also support common
|
|
Unix glob patterns like *, ? and []. However, to avoid your shell
|
|
accidentally expanding glob patterns before Cargo handles them, you must
|
|
use single quotes or double quotes around each glob pattern.
|
|
|
|
--lib
|
|
Build the package's library.
|
|
|
|
--bin name...
|
|
Build the specified binary. This flag may be specified multiple
|
|
times and supports common Unix glob patterns.
|
|
|
|
--bins
|
|
Build all binary targets.
|
|
|
|
--example name...
|
|
Build the specified example. This flag may be specified multiple
|
|
times and supports common Unix glob patterns.
|
|
|
|
--examples
|
|
Build all example targets.
|
|
|
|
--test name...
|
|
Build the specified integration test. This flag may be specified
|
|
multiple times and supports common Unix glob patterns.
|
|
|
|
--tests
|
|
Build all targets in test mode that have the test = true manifest
|
|
flag set. By default this includes the library and binaries built as
|
|
unittests, and integration tests. Be aware that this will also build
|
|
any required dependencies, so the lib target may be built twice
|
|
(once as a unittest, and once as a dependency for binaries,
|
|
integration tests, etc.). Targets may be enabled or disabled by
|
|
setting the test flag in the manifest settings for the target.
|
|
|
|
--bench name...
|
|
Build the specified benchmark. This flag may be specified multiple
|
|
times and supports common Unix glob patterns.
|
|
|
|
--benches
|
|
Build all targets in benchmark mode that have the bench = true
|
|
manifest flag set. By default this includes the library and binaries
|
|
built as benchmarks, and bench targets. Be aware that this will also
|
|
build any required dependencies, so the lib target may be built
|
|
twice (once as a benchmark, and once as a dependency for binaries,
|
|
benchmarks, etc.). Targets may be enabled or disabled by setting the
|
|
bench flag in the manifest settings for the target.
|
|
|
|
--all-targets
|
|
Build all targets. This is equivalent to specifying --lib --bins
|
|
--tests --benches --examples.
|
|
|
|
Feature Selection
|
|
The feature flags allow you to control which features are enabled. When
|
|
no feature options are given, the default feature is activated for every
|
|
selected package.
|
|
|
|
See the features documentation
|
|
<https://doc.rust-lang.org/cargo/reference/features.html#command-line-feature-options>
|
|
for more details.
|
|
|
|
-F features, --features features
|
|
Space or comma separated list of features to activate. Features of
|
|
workspace members may be enabled with package-name/feature-name
|
|
syntax. This flag may be specified multiple times, which enables all
|
|
specified features.
|
|
|
|
--all-features
|
|
Activate all available features of all selected packages.
|
|
|
|
--no-default-features
|
|
Do not activate the default feature of the selected packages.
|
|
|
|
Compilation Options
|
|
--target triple
|
|
Build for the given architecture. The default is the host
|
|
architecture. The general format of the triple is
|
|
<arch><sub>-<vendor>-<sys>-<abi>. Run rustc --print target-list for
|
|
a list of supported targets.
|
|
|
|
This may also be specified with the build.target config value
|
|
<https://doc.rust-lang.org/cargo/reference/config.html>.
|
|
|
|
Note that specifying this flag makes Cargo run in a different mode
|
|
where the target artifacts are placed in a separate directory. See
|
|
the build cache
|
|
<https://doc.rust-lang.org/cargo/guide/build-cache.html>
|
|
documentation for more details.
|
|
|
|
-r, --release
|
|
Build optimized artifacts with the release profile. See also the
|
|
--profile option for choosing a specific profile by name.
|
|
|
|
--profile name
|
|
Build with the given profile.
|
|
|
|
The rustc subcommand will treat the following named profiles with
|
|
special behaviors:
|
|
|
|
o check — Builds in the same way as the cargo-check(1) command
|
|
with the dev profile.
|
|
|
|
o test — Builds in the same way as the cargo-test(1) command,
|
|
enabling building in test mode which will enable tests and enable
|
|
the test cfg option. See rustc tests
|
|
<https://doc.rust-lang.org/rustc/tests/index.html> for more
|
|
detail.
|
|
|
|
o bench — Builds in the same was as the cargo-bench(1) command,
|
|
similar to the test profile.
|
|
|
|
See the the reference
|
|
<https://doc.rust-lang.org/cargo/reference/profiles.html> for more
|
|
details on profiles.
|
|
|
|
--ignore-rust-version
|
|
Build the target even if the selected Rust compiler is older than
|
|
the required Rust version as configured in the project's
|
|
rust-version field.
|
|
|
|
--timings=fmts
|
|
Output information how long each compilation takes, and track
|
|
concurrency information over time. Accepts an optional
|
|
comma-separated list of output formats; --timings without an
|
|
argument will default to --timings=html. Specifying an output format
|
|
(rather than the default) is unstable and requires
|
|
-Zunstable-options. Valid output formats:
|
|
|
|
o html: Write a human-readable file cargo-timing.html to the
|
|
target/cargo-timings directory with a report of the compilation.
|
|
Also write a report to the same directory with a timestamp in the
|
|
filename if you want to look at older runs. HTML output is
|
|
suitable for human consumption only, and does not provide
|
|
machine-readable timing data.
|
|
|
|
o json (unstable, requires -Zunstable-options): Emit
|
|
machine-readable JSON information about timing information.
|
|
|
|
Output Options
|
|
--target-dir directory
|
|
Directory for all generated artifacts and intermediate files. May
|
|
also be specified with the CARGO_TARGET_DIR environment variable, or
|
|
the build.target-dir config value
|
|
<https://doc.rust-lang.org/cargo/reference/config.html>. Defaults to
|
|
target in the root of the workspace.
|
|
|
|
Display Options
|
|
-v, --verbose
|
|
Use verbose output. May be specified twice for "very verbose" output
|
|
which includes extra output such as dependency warnings and build
|
|
script output. May also be specified with the term.verbose config
|
|
value <https://doc.rust-lang.org/cargo/reference/config.html>.
|
|
|
|
-q, --quiet
|
|
Do not print cargo log messages. May also be specified with the
|
|
term.quiet config value
|
|
<https://doc.rust-lang.org/cargo/reference/config.html>.
|
|
|
|
--color when
|
|
Control when colored output is used. Valid values:
|
|
|
|
o auto (default): Automatically detect if color support is
|
|
available on the terminal.
|
|
|
|
o always: Always display colors.
|
|
|
|
o never: Never display colors.
|
|
|
|
May also be specified with the term.color config value
|
|
<https://doc.rust-lang.org/cargo/reference/config.html>.
|
|
|
|
--message-format fmt
|
|
The output format for diagnostic messages. Can be specified multiple
|
|
times and consists of comma-separated values. Valid values:
|
|
|
|
o human (default): Display in a human-readable text format.
|
|
Conflicts with short and json.
|
|
|
|
o short: Emit shorter, human-readable text messages. Conflicts with
|
|
human and json.
|
|
|
|
o json: Emit JSON messages to stdout. See the reference
|
|
<https://doc.rust-lang.org/cargo/reference/external-tools.html#json-messages>
|
|
for more details. Conflicts with human and short.
|
|
|
|
o json-diagnostic-short: Ensure the rendered field of JSON messages
|
|
contains the "short" rendering from rustc. Cannot be used with
|
|
human or short.
|
|
|
|
o json-diagnostic-rendered-ansi: Ensure the rendered field of JSON
|
|
messages contains embedded ANSI color codes for respecting
|
|
rustc's default color scheme. Cannot be used with human or short.
|
|
|
|
o json-render-diagnostics: Instruct Cargo to not include rustc
|
|
diagnostics in in JSON messages printed, but instead Cargo itself
|
|
should render the JSON diagnostics coming from rustc. Cargo's own
|
|
JSON diagnostics and others coming from rustc are still emitted.
|
|
Cannot be used with human or short.
|
|
|
|
Manifest Options
|
|
--manifest-path path
|
|
Path to the Cargo.toml file. By default, Cargo searches for the
|
|
Cargo.toml file in the current directory or any parent directory.
|
|
|
|
--frozen, --locked
|
|
Either of these flags requires that the Cargo.lock file is
|
|
up-to-date. If the lock file is missing, or it needs to be updated,
|
|
Cargo will exit with an error. The --frozen flag also prevents Cargo
|
|
from attempting to access the network to determine if it is
|
|
out-of-date.
|
|
|
|
These may be used in environments where you want to assert that the
|
|
Cargo.lock file is up-to-date (such as a CI build) or want to avoid
|
|
network access.
|
|
|
|
--offline
|
|
Prevents Cargo from accessing the network for any reason. Without
|
|
this flag, Cargo will stop with an error if it needs to access the
|
|
network and the network is not available. With this flag, Cargo will
|
|
attempt to proceed without the network if possible.
|
|
|
|
Beware that this may result in different dependency resolution than
|
|
online mode. Cargo will restrict itself to crates that are
|
|
downloaded locally, even if there might be a newer version as
|
|
indicated in the local copy of the index. See the cargo-fetch(1)
|
|
command to download dependencies before going offline.
|
|
|
|
May also be specified with the net.offline config value
|
|
<https://doc.rust-lang.org/cargo/reference/config.html>.
|
|
|
|
Common Options
|
|
+toolchain
|
|
If Cargo has been installed with rustup, and the first argument to
|
|
cargo begins with +, it will be interpreted as a rustup toolchain
|
|
name (such as +stable or +nightly). See the rustup documentation
|
|
<https://rust-lang.github.io/rustup/overrides.html> for more
|
|
information about how toolchain overrides work.
|
|
|
|
--config KEY=VALUE
|
|
Overrides a Cargo configuration value.
|
|
|
|
-h, --help
|
|
Prints help information.
|
|
|
|
-Z flag
|
|
Unstable (nightly-only) flags to Cargo. Run cargo -Z help for
|
|
details.
|
|
|
|
Miscellaneous Options
|
|
-j N, --jobs N
|
|
Number of parallel jobs to run. May also be specified with the
|
|
build.jobs config value
|
|
<https://doc.rust-lang.org/cargo/reference/config.html>. Defaults to
|
|
the number of logical CPUs. If negative, it sets the maximum number
|
|
of parallel jobs to the number of logical CPUs plus provided value.
|
|
Should not be 0.
|
|
|
|
--keep-going
|
|
Build as many crates in the dependency graph as possible, rather
|
|
than aborting the build on the first one that fails to build.
|
|
Unstable, requires -Zunstable-options.
|
|
|
|
--future-incompat-report
|
|
Displays a future-incompat report for any future-incompatible
|
|
warnings produced during execution of this command
|
|
|
|
See cargo-report(1)
|
|
|
|
ENVIRONMENT
|
|
See the reference
|
|
<https://doc.rust-lang.org/cargo/reference/environment-variables.html>
|
|
for details on environment variables that Cargo reads.
|
|
|
|
EXIT STATUS
|
|
o 0: Cargo succeeded.
|
|
|
|
o 101: Cargo failed to complete.
|
|
|
|
EXAMPLES
|
|
1. Check if your package (not including dependencies) uses unsafe code:
|
|
|
|
cargo rustc --lib -- -D unsafe-code
|
|
|
|
2. Try an experimental flag on the nightly compiler, such as this which
|
|
prints the size of every type:
|
|
|
|
cargo rustc --lib -- -Z print-type-sizes
|
|
|
|
SEE ALSO
|
|
cargo(1), cargo-build(1), rustc(1)
|
|
|