06-cargo doc

cargo-doc(1) 构建文档

译文 · 基于 The Cargo Book

cargo-doc(1)

原文链接: https://doc.rust-lang.org/cargo/commands/cargo-doc.html

名称

cargo-doc — 构建包的文档

大纲

cargo doc [options]

描述

为本地包及所有依赖构建文档。输出以 rustdoc 的常规格式放在 target/doc。

注意: 文档生成是累积的:target 目录中已有的文档文件在不同的 cargo doc 调用之间会保留。若要移除已生成的文档,请对 cargo-clean(1) 传入 --doc。

选项

文档选项

--open

构建完成后在浏览器中打开文档。将使用默认浏览器,除非你在 BROWSER 环境变量中定义了其他浏览器,或使用了 doc.browser 配置选项。

--no-deps

不为依赖构建文档。

--document-private-items

在文档中包含非公开项。若正在为二进制目标生成文档,默认会启用此选项。

包选择

默认情况下,若未给出包选择选项,所选包取决于所选清单文件(若未给出 --manifest-path,则基于当前工作目录)。若清单是工作空间根,则选择该工作空间的默认成员;否则仅选择清单所定义的包。

工作空间的默认成员可通过根清单中的 workspace.default-members 键显式设置。若未设置,虚拟工作空间将包含所有工作空间成员(等价于传入 --workspace),非虚拟工作空间将仅包含根 crate 本身。

-p spec…
--package spec…

仅为指定的包生成文档。 SPEC 格式见 cargo-pkgid(1)。 此标志可指定多次,并支持常见的 Unix glob 模式,如 *、? 和 []。不过,为避免 shell 在 Cargo 处理之前意外展开 glob 模式,必须用单引号或双引号括住每个模式。

--workspace

为工作空间中的所有成员生成文档。

--all

--workspace 的已弃用别名。

--exclude SPEC…

排除指定的包。必须与 --workspace 标志一起使用。 此标志可指定多次,并支持常见的 Unix glob 模式,如 *、? 和 []。不过,为避免 shell 在 Cargo 处理之前意外展开 glob 模式,必须用单引号或双引号括住每个模式。

目标选择

若未给出目标选择选项,cargo doc 将为所选包的所有二进制与库目标生成文档。若二进制名称与 lib 目标相同则会被跳过。若二进制缺少其 required-features,也会被跳过。

可通过在清单设置中为目标设置 doc = false 来更改默认行为。使用目标选择选项会忽略 doc 标志,并始终为给定目标生成文档。

--lib

为包的库生成文档。

--bin name…

为指定的二进制目标生成文档。 此标志可指定多次,并支持常见的 Unix glob 模式。

--bins

为所有二进制目标生成文档。

--example name…

为指定的示例生成文档。 此标志可指定多次,并支持常见的 Unix glob 模式。

--examples

为所有示例目标生成文档。

特性选择

特性标志用于控制启用哪些特性(feature)。若未给出特性选项,则为每个所选包激活 default 特性。

参见特性文档 了解更多详情。

-F features
--features features

要激活的特性列表,以空格或逗号分隔。工作空间成员的特性可用 package-name/feature-name 语法启用。此标志可指定多次,将启用所有指定的特性。

--all-features

激活所有所选包的全部可用特性。

--no-default-features

不激活所选包的 default 特性。

编译选项

--target triple

Document for the specified target architecture. Flag may be specified multiple times. The default is the host architecture. triple 的一般格式为 <arch><sub>-<vendor>-<sys>-<abi>。

可能的值:

  • rustc --print target-list 中任何受支持的目标。
  • "host-tuple",内部会替换为主机目标。若你在交叉编译某些 crate,又不想把主机机器指定为目标(例如可能由多台主机协作的共享项目中的 xtask),这会特别有用。
  • 自定义目标规范的路径。更多信息见 自定义目标查找路径。

也可通过 build.target 配置值 指定。

注意:指定此标志会使 Cargo 以不同模式运行,目标产物会放在单独目录中。详情见 构建缓存文档。

-r
--release

使用 release 配置文件为优化后的产物生成文档。 也可使用 --profile 选项按名称选择特定配置文件。

--profile name

使用给定的配置文件生成文档。 关于配置文件的更多详情见参考文档。

--timings

输出每次编译耗时信息,并跟踪一段时间内的并发信息。

构建结束时会将 cargo-timing.html 文件写入 target/cargo-timings 目录。还会写入一份文件名带时间戳的额外报告,便于查看先前运行。 这些报告仅供人阅读,不提供机器可读的耗时数据。

输出选项

--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 (默认): 以人类可读的文本格式显示。与 short 和 json 冲突。
  • short: 发出更短的人类可读文本消息。与 human 和 json 冲突。
  • json: 向 stdout 发出 JSON 消息。详情见 参考文档。 与 human 和 short 冲突。
  • 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 选项

--manifest-path path

Cargo.toml 文件的路径。默认情况下,Cargo 会在当前目录或其任意父目录中搜索 Cargo.toml。

--ignore-rust-version

忽略包中的 rust-version 规范。

--locked

断言使用与生成现有 Cargo.lock 文件时完全相同的依赖与版本。出现以下任一情况时,Cargo 将以错误退出:

  • 缺少锁文件。
  • 由于依赖解析不同,Cargo 试图更改锁文件。

可用于需要确定性构建的环境,例如 CI 流水线。

--offline

禁止 Cargo 因任何原因访问网络。若未指定此标志,当 Cargo 需要访问网络而网络不可用时会以错误停止。指定此标志后,Cargo 会在可能的情况下尝试在无网络时继续。

注意:这可能导致与在线模式不同的依赖解析结果。Cargo 将仅使用本地已下载的 crate,即使本地索引副本表明可能有更新版本。 可先使用 cargo-fetch(1) 命令下载依赖再离线使用。

也可通过 net.offline 配置值 指定。

--frozen

等价于同时指定 --locked 与 --offline。

通用选项

+toolchain

若 Cargo 通过 rustup 安装,且传给 cargo 的第一个参数以 + 开头,则会被解释为 rustup 工具链名称(例如 +stable 或 +nightly)。 关于工具链覆盖的工作方式,请参阅 rustup 文档。

--config KEY=VALUE or PATH

覆盖 Cargo 配置值。参数应为 TOML 语法的 KEY=VALUE,或指向额外配置文件的路径。此标志可指定多次。 更多信息见 命令行覆盖一节。

-C PATH

在执行任何指定操作之前更改当前工作目录。这会影响诸如 Cargo 默认查找项目清单(Cargo.toml)的位置,以及用于发现 .cargo/config.toml 的目录搜索等。此选项必须出现在命令名之前,例如 cargo -C path/to/my-project build。

此选项仅在 nightly 通道 可用, 并需要 -Z unstable-options 标志才能启用(见 #10098)。

-h
--help

打印帮助信息。

-Z flag

Cargo 的不稳定(仅 nightly)标志。运行 cargo -Z help 查看详情。

杂项选项

-j N
--jobs N

并行作业数。也可通过 build.jobs 配置值 指定。默认为 逻辑 CPU 数量。若为负数,则将并行作业上限设为逻辑 CPU 数加上所给值。若 提供字符串 default,则恢复为默认值。 不应为 0。

--keep-going

尽可能构建依赖图中的更多 crate,而不是在第一个构建失败时中止。

例如,若当前包依赖 fails 与 works, 其中之一构建失败,则 cargo doc -j1 可能构建也可能不构建成功的那个 (取决于 Cargo 先运行哪一个),而 cargo doc -j1 --keep-going 肯定会运行两者, 即便先运行的那个失败。

环境变量

参见参考文档 了解 Cargo 读取的环境变量详情。

退出状态

  • 0: Cargo 成功完成。
  • 101: Cargo 未能完成。

示例

  1. 构建本地包及其依赖的文档,并输出到 target/doc。

    cargo doc
    

参见

cargo(1)、cargo-rustdoc(1)、rustdoc(1)

最后修改 August 11, 2026: 更新 (70a5af133)