]> git.proxmox.com Git - cargo.git/blame - src/doc/src/commands/cargo-run.md
Make `--timings` require `=` if passing an argument
[cargo.git] / src / doc / src / commands / cargo-run.md
CommitLineData
2d4aa38b
EH
1# cargo-run(1)
2
3
4## NAME
5
6cargo-run - Run the current package
7
8## SYNOPSIS
9
10`cargo run` [_options_] [`--` _args_]
11
12## DESCRIPTION
13
14Run a binary or example of the local package.
15
16All the arguments following the two dashes (`--`) are passed to the binary to
17run. If you're passing arguments to both Cargo and the binary, the ones after
18`--` go to the binary, the ones before go to Cargo.
19
20## OPTIONS
21
22### Package Selection
23
24By default, the package in the current working directory is selected. The `-p`
25flag can be used to choose a different package in a workspace.
26
27<dl>
28
29<dt class="option-term" id="option-cargo-run--p"><a class="option-anchor" href="#option-cargo-run--p"></a><code>-p</code> <em>spec</em></dt>
30<dt class="option-term" id="option-cargo-run---package"><a class="option-anchor" href="#option-cargo-run---package"></a><code>--package</code> <em>spec</em></dt>
1a86f232 31<dd class="option-desc">The package to run. See <a href="cargo-pkgid.html">cargo-pkgid(1)</a> for the SPEC
2d4aa38b
EH
32format.</dd>
33
34
35</dl>
36
37
38### Target Selection
39
40When no target selection options are given, `cargo run` will run the binary
41target. If there are multiple binary targets, you must pass a target flag to
42choose one. Or, the `default-run` field may be specified in the `[package]`
43section of `Cargo.toml` to choose the name of the binary to run by default.
44
45<dl>
46
47<dt class="option-term" id="option-cargo-run---bin"><a class="option-anchor" href="#option-cargo-run---bin"></a><code>--bin</code> <em>name</em></dt>
48<dd class="option-desc">Run the specified binary.</dd>
49
50
51<dt class="option-term" id="option-cargo-run---example"><a class="option-anchor" href="#option-cargo-run---example"></a><code>--example</code> <em>name</em></dt>
52<dd class="option-desc">Run the specified example.</dd>
53
54
55</dl>
56
57### Feature Selection
58
d087aeb8
EH
59The feature flags allow you to control which features are enabled. When no
60feature options are given, the `default` feature is activated for every
61selected package.
2d4aa38b 62
d087aeb8
EH
63See [the features documentation](../reference/features.html#command-line-feature-options)
64for more details.
2d4aa38b
EH
65
66<dl>
67
68<dt class="option-term" id="option-cargo-run---features"><a class="option-anchor" href="#option-cargo-run---features"></a><code>--features</code> <em>features</em></dt>
d087aeb8
EH
69<dd class="option-desc">Space or comma separated list of features to activate. Features of workspace
70members may be enabled with <code>package-name/feature-name</code> syntax. This flag may
71be specified multiple times, which enables all specified features.</dd>
2d4aa38b
EH
72
73
74<dt class="option-term" id="option-cargo-run---all-features"><a class="option-anchor" href="#option-cargo-run---all-features"></a><code>--all-features</code></dt>
75<dd class="option-desc">Activate all available features of all selected packages.</dd>
76
77
78<dt class="option-term" id="option-cargo-run---no-default-features"><a class="option-anchor" href="#option-cargo-run---no-default-features"></a><code>--no-default-features</code></dt>
d087aeb8 79<dd class="option-desc">Do not activate the <code>default</code> feature of the selected packages.</dd>
2d4aa38b
EH
80
81
82</dl>
83
84
85### Compilation Options
86
87<dl>
88
89<dt class="option-term" id="option-cargo-run---target"><a class="option-anchor" href="#option-cargo-run---target"></a><code>--target</code> <em>triple</em></dt>
90<dd class="option-desc">Run for the given architecture. The default is the host
91architecture. The general format of the triple is
92<code>&lt;arch&gt;&lt;sub&gt;-&lt;vendor&gt;-&lt;sys&gt;-&lt;abi&gt;</code>. Run <code>rustc --print target-list</code> for a
93list of supported targets.</p>
94<p>This may also be specified with the <code>build.target</code>
1a86f232 95<a href="../reference/config.html">config value</a>.</p>
2d4aa38b
EH
96<p>Note that specifying this flag makes Cargo run in a different mode where the
97target artifacts are placed in a separate directory. See the
1a86f232 98<a href="../guide/build-cache.html">build cache</a> documentation for more details.</dd>
2d4aa38b
EH
99
100
101
c92d917f 102<dt class="option-term" id="option-cargo-run--r"><a class="option-anchor" href="#option-cargo-run--r"></a><code>-r</code></dt>
2d4aa38b 103<dt class="option-term" id="option-cargo-run---release"><a class="option-anchor" href="#option-cargo-run---release"></a><code>--release</code></dt>
895f5271
EH
104<dd class="option-desc">Run optimized artifacts with the <code>release</code> profile.
105See also the <code>--profile</code> option for choosing a specific profile by name.</dd>
106
107
108
109<dt class="option-term" id="option-cargo-run---profile"><a class="option-anchor" href="#option-cargo-run---profile"></a><code>--profile</code> <em>name</em></dt>
110<dd class="option-desc">Run with the given profile.
111See the <a href="../reference/profiles.html">the reference</a> for more details on profiles.</dd>
2d4aa38b
EH
112
113
114
db3776cf
DO
115<dt class="option-term" id="option-cargo-run---ignore-rust-version"><a class="option-anchor" href="#option-cargo-run---ignore-rust-version"></a><code>--ignore-rust-version</code></dt>
116<dd class="option-desc">Run the target even if the selected Rust compiler is older than the
117required Rust version as configured in the project's <code>rust-version</code> field.</dd>
118
119
120
c8542471 121<dt class="option-term" id="option-cargo-run---timings=fmts"><a class="option-anchor" href="#option-cargo-run---timings=fmts"></a><code>--timings=</code><em>fmts</em></dt>
c0669189
JT
122<dd class="option-desc">Output information how long each compilation takes, and track concurrency
123information over time. Accepts an optional comma-separated list of output
124formats; <code>--timing</code> without an argument will default to <code>--timing=html</code>. Valid
125output formats:</p>
126<ul>
e23f5f41
JT
127<li><code>html</code>: Write a human-readable file <code>cargo-timing.html</code> to the
128<code>target/cargo-timings</code> directory with a report of the compilation. Also write
129a report to the same directory with a timestamp in the filename if you want
130to look at older runs. HTML output is suitable for human consumption only,
131and does not provide machine-readable timing data.</li>
c0669189
JT
132<li><code>json</code> (unstable, requires <code>-Zunstable-options</code>): Emit machine-readable JSON
133information about timing information.</li>
134</ul></dd>
135
136
137
138
2d4aa38b
EH
139</dl>
140
141### Output Options
142
143<dl>
144<dt class="option-term" id="option-cargo-run---target-dir"><a class="option-anchor" href="#option-cargo-run---target-dir"></a><code>--target-dir</code> <em>directory</em></dt>
145<dd class="option-desc">Directory for all generated artifacts and intermediate files. May also be
146specified with the <code>CARGO_TARGET_DIR</code> environment variable, or the
ee53210f
WL
147<code>build.target-dir</code> <a href="../reference/config.html">config value</a>.
148Defaults to <code>target</code> in the root of the workspace.</dd>
2d4aa38b
EH
149
150
151</dl>
152
153### Display Options
154
155<dl>
156
157<dt class="option-term" id="option-cargo-run--v"><a class="option-anchor" href="#option-cargo-run--v"></a><code>-v</code></dt>
158<dt class="option-term" id="option-cargo-run---verbose"><a class="option-anchor" href="#option-cargo-run---verbose"></a><code>--verbose</code></dt>
159<dd class="option-desc">Use verbose output. May be specified twice for &quot;very verbose&quot; output which
160includes extra output such as dependency warnings and build script output.
161May also be specified with the <code>term.verbose</code>
1a86f232 162<a href="../reference/config.html">config value</a>.</dd>
2d4aa38b
EH
163
164
165<dt class="option-term" id="option-cargo-run--q"><a class="option-anchor" href="#option-cargo-run--q"></a><code>-q</code></dt>
166<dt class="option-term" id="option-cargo-run---quiet"><a class="option-anchor" href="#option-cargo-run---quiet"></a><code>--quiet</code></dt>
cd4e2804
SJ
167<dd class="option-desc">Do not print cargo log messages.
168May also be specified with the <code>term.quiet</code>
169<a href="../reference/config.html">config value</a>.</dd>
2d4aa38b
EH
170
171
172<dt class="option-term" id="option-cargo-run---color"><a class="option-anchor" href="#option-cargo-run---color"></a><code>--color</code> <em>when</em></dt>
173<dd class="option-desc">Control when colored output is used. Valid values:</p>
174<ul>
175<li><code>auto</code> (default): Automatically detect if color support is available on the
176terminal.</li>
177<li><code>always</code>: Always display colors.</li>
178<li><code>never</code>: Never display colors.</li>
179</ul>
180<p>May also be specified with the <code>term.color</code>
1a86f232 181<a href="../reference/config.html">config value</a>.</dd>
2d4aa38b
EH
182
183
184
185<dt class="option-term" id="option-cargo-run---message-format"><a class="option-anchor" href="#option-cargo-run---message-format"></a><code>--message-format</code> <em>fmt</em></dt>
186<dd class="option-desc">The output format for diagnostic messages. Can be specified multiple times
187and consists of comma-separated values. Valid values:</p>
188<ul>
d174b773
CR
189<li><code>human</code> (default): Display in a human-readable text format. Conflicts with
190<code>short</code> and <code>json</code>.</li>
191<li><code>short</code>: Emit shorter, human-readable text messages. Conflicts with <code>human</code>
192and <code>json</code>.</li>
2d4aa38b 193<li><code>json</code>: Emit JSON messages to stdout. See
1a86f232 194<a href="../reference/external-tools.html#json-messages">the reference</a>
d174b773 195for more details. Conflicts with <code>human</code> and <code>short</code>.</li>
2d4aa38b 196<li><code>json-diagnostic-short</code>: Ensure the <code>rendered</code> field of JSON messages contains
d174b773 197the &quot;short&quot; rendering from rustc. Cannot be used with <code>human</code> or <code>short</code>.</li>
2d4aa38b
EH
198<li><code>json-diagnostic-rendered-ansi</code>: Ensure the <code>rendered</code> field of JSON messages
199contains embedded ANSI color codes for respecting rustc's default color
d174b773 200scheme. Cannot be used with <code>human</code> or <code>short</code>.</li>
2d4aa38b
EH
201<li><code>json-render-diagnostics</code>: Instruct Cargo to not include rustc diagnostics in
202in JSON messages printed, but instead Cargo itself should render the
203JSON diagnostics coming from rustc. Cargo's own JSON diagnostics and others
d174b773 204coming from rustc are still emitted. Cannot be used with <code>human</code> or <code>short</code>.</li>
2d4aa38b
EH
205</ul></dd>
206
207
208
209</dl>
210
211### Manifest Options
212
213<dl>
214
215<dt class="option-term" id="option-cargo-run---manifest-path"><a class="option-anchor" href="#option-cargo-run---manifest-path"></a><code>--manifest-path</code> <em>path</em></dt>
216<dd class="option-desc">Path to the <code>Cargo.toml</code> file. By default, Cargo searches for the
217<code>Cargo.toml</code> file in the current directory or any parent directory.</dd>
218
219
220
221<dt class="option-term" id="option-cargo-run---frozen"><a class="option-anchor" href="#option-cargo-run---frozen"></a><code>--frozen</code></dt>
222<dt class="option-term" id="option-cargo-run---locked"><a class="option-anchor" href="#option-cargo-run---locked"></a><code>--locked</code></dt>
223<dd class="option-desc">Either of these flags requires that the <code>Cargo.lock</code> file is
224up-to-date. If the lock file is missing, or it needs to be updated, Cargo will
225exit with an error. The <code>--frozen</code> flag also prevents Cargo from
226attempting to access the network to determine if it is out-of-date.</p>
227<p>These may be used in environments where you want to assert that the
228<code>Cargo.lock</code> file is up-to-date (such as a CI build) or want to avoid network
229access.</dd>
230
231
232<dt class="option-term" id="option-cargo-run---offline"><a class="option-anchor" href="#option-cargo-run---offline"></a><code>--offline</code></dt>
233<dd class="option-desc">Prevents Cargo from accessing the network for any reason. Without this
234flag, Cargo will stop with an error if it needs to access the network and
235the network is not available. With this flag, Cargo will attempt to
236proceed without the network if possible.</p>
237<p>Beware that this may result in different dependency resolution than online
238mode. Cargo will restrict itself to crates that are downloaded locally, even
239if there might be a newer version as indicated in the local copy of the index.
1a86f232 240See the <a href="cargo-fetch.html">cargo-fetch(1)</a> command to download dependencies before going
2d4aa38b 241offline.</p>
1a86f232 242<p>May also be specified with the <code>net.offline</code> <a href="../reference/config.html">config value</a>.</dd>
2d4aa38b
EH
243
244
245
246</dl>
247
248### Common Options
249
250<dl>
251
252<dt class="option-term" id="option-cargo-run-+toolchain"><a class="option-anchor" href="#option-cargo-run-+toolchain"></a><code>+</code><em>toolchain</em></dt>
253<dd class="option-desc">If Cargo has been installed with rustup, and the first argument to <code>cargo</code>
254begins with <code>+</code>, it will be interpreted as a rustup toolchain name (such
255as <code>+stable</code> or <code>+nightly</code>).
fac70ee7 256See the <a href="https://rust-lang.github.io/rustup/overrides.html">rustup documentation</a>
2d4aa38b
EH
257for more information about how toolchain overrides work.</dd>
258
259
260<dt class="option-term" id="option-cargo-run--h"><a class="option-anchor" href="#option-cargo-run--h"></a><code>-h</code></dt>
261<dt class="option-term" id="option-cargo-run---help"><a class="option-anchor" href="#option-cargo-run---help"></a><code>--help</code></dt>
262<dd class="option-desc">Prints help information.</dd>
263
264
265<dt class="option-term" id="option-cargo-run--Z"><a class="option-anchor" href="#option-cargo-run--Z"></a><code>-Z</code> <em>flag</em></dt>
266<dd class="option-desc">Unstable (nightly-only) flags to Cargo. Run <code>cargo -Z help</code> for details.</dd>
267
268
269</dl>
270
271
272### Miscellaneous Options
273
274<dl>
275<dt class="option-term" id="option-cargo-run--j"><a class="option-anchor" href="#option-cargo-run--j"></a><code>-j</code> <em>N</em></dt>
276<dt class="option-term" id="option-cargo-run---jobs"><a class="option-anchor" href="#option-cargo-run---jobs"></a><code>--jobs</code> <em>N</em></dt>
277<dd class="option-desc">Number of parallel jobs to run. May also be specified with the
1a86f232 278<code>build.jobs</code> <a href="../reference/config.html">config value</a>. Defaults to
2d4aa38b
EH
279the number of CPUs.</dd>
280
281
282</dl>
283
2d4aa38b
EH
284## ENVIRONMENT
285
286See [the reference](../reference/environment-variables.html) for
287details on environment variables that Cargo reads.
288
289
290## EXIT STATUS
291
292* `0`: Cargo succeeded.
293* `101`: Cargo failed to complete.
294
295
296## EXAMPLES
297
2981. Build the local package and run its main target (assuming only one binary):
299
300 cargo run
301
3022. Run an example with extra arguments:
303
304 cargo run --example exname -- --exoption exarg1 exarg2
305
306## SEE ALSO
1a86f232 307[cargo(1)](cargo.html), [cargo-build(1)](cargo-build.html)