cargo-run(1)

定义

cargo-run - 运行当前包

概要

cargo run [options] [-- args]

说明

运行本地包的二进制程序或实例。

两个破折号(--)后的所有参数都传递给二进制程序运行。 如果同时向Cargo和二进制程序传递参数,那么 -- 后面的参数将传递给二进制程序,前面的参数将传递给Cargo。

选项

包的选择

默认情况下,选中当前工作目录下的包。可以用 -p 标志来选择工作空间中不同的包。

-p spec
--package spec
运行包。 见 cargo-pkgid(1) 了解 SPEC 规格。

目标选择

当未给出目标选择选项时, cargo run 将运行二进制目标。如果有多个二进制目标,必须传递一个目标标志。或者,在 Cargo.toml 指定 [package]default-run 字段。

--bin name
运行指定二进制。
--example name
运行指定实例。

特性选择

特性标志允许你控制开启哪些特性。当没有提供特性选项时,会为每个选择的包启用 default 特性。

参阅 特性文档 了解更多内容。

-F features
--features features
要激活的特性列表用空格或逗号分隔。 工作空间成员的特性可以用package-name/feature-name语法启用。 这个标志可以被多次指定,以启用所有指定的特性。
--all-features
激活所有选定包的所有可用特性。
--no-default-features
不要激活所选包的default特性。

编译选项

--target triple
运行给定的架构。默认是主机架构。三元组的常规格式是 <arch><sub>-<vendor>-<sys>-<abi>。 运行 rustc --print target-list 以获得支持的目标列表。

也可以通过 build.target 配置

注意,指定这个标志会使Cargo在不同的模式下运行,目标制品放在单独目录。 参见 构建缓存 文档了解详情。

-r
--release
release 编译设置运行优化的制品。 参见 --profile 选项,以按名称选择特定的编译设置。
--profile name
以给定的编译设置运行。 见 参考 了解编译设置详情。
--ignore-rust-version
即使所选的Rust编译器比项目rust-version字段中配置所需的Rust版本更早,仍运行目标。
--timings=fmts
输出每次编译需要多长时间的信息,并跟踪时间段的并发信息。 接受可选的逗号分隔的输出格式列表;没有参数的--timings将默认为--timings=html。 指定未稳定的输出格式(而不是默认),需要-Zunstable-options。 有效的输出格式:

  • html (未稳定, 要求 -Zunstable-options): 在target/cargo-timings目录下生成可阅读的 cargo-timing.html 文件,并附编译报告。 如果你想查看更早的运行情况,也可以将报告写到同一目录下,文件名带有时间戳。 HTML输出适合人类阅读,机器不可读。
  • json (未稳定, 要求 -Zunstable-options): 发送机器可读的关于时间信息的JSON。

输出选项

--target-dir directory
所有生成制品和中间文件的目录。 也可以用 CARGO_TARGET_DIR 环境变量, 或 build.target-dir 配置。 默认为工作空间的根target

显示选项

-v
--verbose
进行详细输出。可以指定两遍来开启 "非常详细" 模式,输出更多的额外信息,像是依赖项的警告和构建脚本的输出信息。 也可以通过 term.verbose 配置
-q
--quiet
不打印 cargo 日志信息。 也可以通过 term.quiet 配置
--color when
控制使用彩色输出。可选值有:

  • auto (默认值): 自动检测终端是否支持彩色输出。
  • always: 总是显示彩色。
  • never: 从不显示彩色。

也可以在 term.color 配置

--message-format fmt
特征信息的输出格式。可以多次指定,数值由逗号分隔。有效值:

  • human (默认): 以人可阅读的文本格式显示。 shortjson 冲突。
  • short: 发出更短的、人可阅读的文本信息。 humanjson 冲突。
  • json: 向标准输出发送JSON信息。 见 参考 了解详情. humanshort 冲突。
  • json-diagnostic-short: 确保JSON消息的rendered字段包含rustc的"short"渲染。不能和 human short
  • json-diagnostic-rendered-ansi: 确保JSON消息的rendered字段包含嵌入式ANSI颜色代码,以遵从rustc的默认颜色方案。 不能和 human short
  • json-render-diagnostics: 指示Cargo在打印的JSON信息中不包含rustc的特征信息,而是由Cargo来渲染来自rustc的JSON信息。Cargo自身的JSON和其他来自rustc的信息仍会发送。不能和 human short

配置选项

--manifest-path path
Cargo.toml 文件的路径。默认, Cargo 在当前目录和任意父目录搜索 Cargo.toml 文件。
--frozen
--locked
这些标志都要求 Cargo.lock 文件是最新的。 如果lock文件丢失, 或是需要更新, Cargo会返回错误并退出,--frozen 选项还会阻止cargo通过网络来判断其是否过期。

可以用于断言 Cargo.lock 文件是否最新状态(例如CI构建)或避免网络访问。

--offline
阻止Cargo访问网络。如果不指定该选项,Cargo会在需要使用网络但不可用时停止构建并返回错误。设置该标识,Cargo将尽可能不使用网络完成构建。

需注意,这样可能会导致与在线模式不同的依赖处理,Cargo将限制仅使用已下载到本地的crate,即使本地索引中有更新版本。 查阅 cargo-fetch(1) 命令,在脱机前下载依赖。

也可以用 net.offline 配置

常规选项

+toolchain
如果Cargo已经通过rustup安装,并且第一个传给 cargo 的参数以 + 开头, 则当作rustup的工具链名称。(例如 +stable+nightly). 查阅 rustup 文档 了解关于工具链覆盖的信息。
--config KEY=VALUE or PATH
覆盖Cargo配置项的值,该参数应当为TOML KEY=VALUE 语法, 或者提供附加的配置文件的路径。该标识可以多次指定。 查阅 命令行覆盖部分 获取更多信息
-h
--help
打印帮助信息。
-Z flag
Cargo不稳定的(每日构建)标志。运行 cargo -Z help 了解详情。

其他选项

-j N
--jobs N
并行执行的任务数。可以通过 build.jobs 配置。默认值为逻辑CPU数。如果设置为负值,则最大的并行任务数为*逻辑CPU数*加*这个负数*。该值不能为0。
--keep-going
尽可能的构建依赖图中的 crate ,而不是一个失败就停止。功能还不稳定,需要 -Zunstable-options

环境

查阅 参考 了解Cargo读取环境变量。

退出状态

  • 0: Cargo 执行成功。
  • 101: Cargo 没有成功完成。

示例

  1. 构建本地包并运行其主要目标(假设仅有一个二进制文件):

    cargo run
    
  2. 运行附带参数的实例:

    cargo run --example exname -- --exoption exarg1 exarg2
    

参阅

cargo(1), cargo-build(1)