Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CARGO-RUSTC(1)		    General Commands Manual		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.

       Passing target selection	flags will build only the specified targets.

       --lib
	   Build the package's library.

       --bin name...
	   Build the specified binary. This flag may be	specified multiple
	   times.

       --bins
	   Build all binary targets.

       --example name...
	   Build the specified example.	This flag may be specified multiple
	   times.

       --examples
	   Build all example targets.

       --test name...
	   Build the specified integration test. This flag may be specified
	   multiple times.

       --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.

       --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 the enabled features for the
       "current" package. The "current"	package	is the package in the current
       directory, or the one specified in --manifest-path. If running in the
       root of a virtual workspace, then the default features are selected for
       all workspace members, or all features if --all-features	is specified.

       When no feature options are given, the default feature is activated for
       every selected package.

       --features features
	   Space or comma separated list of features to	activate. These
	   features only apply to the current directory's package. Features of
	   direct dependencies may be enabled with <dep-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 current directory's
	   package.

   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.

       --release
	   Build optimized artifacts with the release profile. See the
	   PROFILES section for	details	on how this affects profile selection.

   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
	   No output printed to	stdout.

       --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.

	   o  short: Emit shorter, human-readable text messages.

	   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.

	   o  json-diagnostic-short: Ensure the	rendered field of JSON
	       messages	contains the "short" rendering from rustc.

	   o  json-diagnostic-rendered-ansi: Ensure the	rendered field of JSON
	       messages	contains embedded ANSI color codes for respecting
	       rustc's default color scheme.

	   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.

   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://github.com/rust-lang/rustup/> for more information about
	   how toolchain overrides work.

       -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 CPUs.

PROFILES
       Profiles	may be used to configure compiler options such as optimization
       levels and debug	settings. See the reference
       <https://doc.rust-lang.org/cargo/reference/profiles.html> for more
       details.

       Profile selection depends on the	target and crate being built. By
       default the dev or test profiles	are used. If the --release flag	is
       given, then the release or bench	profiles are used.

       +--------------------+-----------------+-------------------+
       |Target		    | Default Profile |	--release Profile |
       +--------------------+-----------------+-------------------+
       |lib, bin, example   | dev	      |	release		  |
       +--------------------+-----------------+-------------------+
       |test, bench, or	any | test	      |	bench		  |
       |target in "test" or |		      |			  |
       |"bench"	mode	    |		      |			  |
       +--------------------+-----------------+-------------------+

       Dependencies use	the dev/release	profiles.

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)

								CARGO-RUSTC(1)

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | PROFILES | ENVIRONMENT | EXIT STATUS | EXAMPLES | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=cargo-rustc&sektion=1&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help