news 2026/9/17 16:39:38

从 PR 到本地构建:ROCm 文档构建全指南(GitHub / 命令行 / VS Code 三路打通)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从 PR 到本地构建:ROCm 文档构建全指南(GitHub / 命令行 / VS Code 三路打通)

从 PR 到本地构建:ROCm 文档构建全指南(GitHub / 命令行 / VS Code 三路打通)

【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build

ROCm 官方文档(本文以当前仓库 legacy-rocm-build 为蓝本)本身就是一个由 Sphinx 驱动的开源项目,贡献者既可以在云端通过 GitHub 与 Read the Docs 集成查看 PR 构建结果,也可以在本地用命令行或 Visual Studio Code 构建出完整 HTML 站点进行预览。本篇指南将完整覆盖这三种构建路径:从提交 PR 后如何定位构建报告,到使用venv+ Sphinx 一键生成文档,再到在 VS Code 中搭建带实时刷新的写作与调试环境,读完即可上手为 ROCm 文档提交并验证自己的改动。

构建前了解:ROCm 文档的技术栈与仓库布局

在动手构建之前,先理解 ROCm 文档在仓库中的组织方式,这有助于解释后续构建命令的各个参数。

核心构建链:Sphinx + rocm-docs-core

根据仓库内的 docs/contribute/toolchain.md,ROCm 文档构建依赖以下开源工具:

  • Sphinx:核心文档生成器,负责把 reStructuredText / Markdown 源码编译为 HTML 等输出格式;
  • Sphinx External ToC:基于 YAML 导航文件生成左侧目录树,对应仓库中的 docs/sphinx/_toc.yml.in;
  • Sphinx-book-theme / rocm-docs-core:负责站点的外观主题与 ROCm 定制(页眉、页脚、选择器等);
  • Sphinx Design:提供卡片、网格与同步标签页(如本文后面命令块中的 Linux/Windows 标签页切换);
  • Doxygen + Breathe:用于从源码注释生成 API 文档。

仓库根目录的 CMakeLists.txt 中有一个BUILD_DOCS开关(默认ON),它控制是否进入 docs/CMakeLists.txt 中的rocm_add_sphinx_doc(...)文档构建目标;而 cmake/Modules/Dependencies.cmake 会在需要时通过FetchContent拉取rocm-cmake来提供该构建模块。这意味着文档构建既可以直接用 Sphinx 命令行,也可以纳入 CMake 的构建流程。

两种文档目录:当前活跃版与归档版

本仓库同时存在两份内容几乎一致的构建指南:

  • docs/contribute/building.md:活跃版本,已被 docs/sphinx/_toc.yml.in 的 "Contribute → Building documentation" 目录项引用;
  • docs/exclude/about/contribute/building.md:位于exclude(排除)目录下的旧版归档。

本篇指南以归档版文档为主干展开讲解,其内容与活跃版一致,可作为两份文档的通用操作手册。

方式一:通过 GitHub PR 查看云端 Read the Docs 构建

ROCm 文档由 Read the Docs 服务托管构建。作为贡献者,你提交 Pull Request 后并不需要自己先在本地构建,可以先利用云端自动构建结果做一次快速验证。

  1. 打开你的 PR,滚动到页面底部的summary panel(摘要面板)
  2. commit status(提交状态)区域找到形如docs/readthedocs.com:advanced-micro-devices-demo的状态行,其右侧有一个Details链接;
  3. 点击Details即可跳转到 Read the Docs 针对该 PR 的构建页面,查看构建日志与产物。

提示:如果在摘要面板中看不到上述状态行,点击Show all checks(显示全部检查)展开条目化视图即可找到。

云端构建的 Python 版本与依赖包均由项目配置文件决定:Python 版本由 Read the Docs 配置中的build.tools.python指定,Python 依赖清单则来自 docs/sphinx/requirements.txt——注意该文件本身是一个"指针"文件,通过-r引用了rocm-docs-core提供的统一依赖列表,因此在本地构建时同样需要安装该文件内容。

方式二:命令行本地构建(Linux / WSL 与 Windows)

云端构建适合快速验收,但撰写文档时强烈建议在本地构建,以便实时发现语法错误、失效链接和告警。

环境准备

  • Python:使用 Read the Docs 指定的版本(见项目 Read the Docs 配置中的build.tools.python设置);
  • Python 包:安装 docs/sphinx/requirements.txt 中列出的全部依赖(包含 Sphinx、rocm-docs-core 及相关扩展);
  • 虚拟环境:使用 Python 标准库的venv隔离依赖,避免污染系统环境。

构建步骤

项目根目录执行以下命令。Linux 与 WSL 使用sh

python3 -mvenv .venv .venv/bin/python -m pip install -r docs/sphinx/requirements.txt .venv/bin/python -m sphinx -T -E -b html -d _build/doctrees -D language=en docs _build/html

Windows 使用 PowerShell(注意解释器路径分隔符为反斜杠):

python -mvenv .venv .venv\Scripts\python.exe -m pip install -r docs/sphinx/requirements.txt .venv\Scripts\python.exe -m sphinx -T -E -b html -d _build/doctrees -D language=en docs _build/html

构建命令参数逐项解析

sphinx命令为例,各参数作用如下:

参数含义
-T显示完整回溯(traceback),出错时便于定位问题来源
-E不使用缓存的构建环境,强制全量重建,避免增量构建带来的陈旧输出
-b html指定构建器(builder)为 HTML,生成可浏览的网页站点
-d _build/doctrees指定 doctree(Sphinx 内部解析树)的缓存目录
-D language=en以命令行方式覆盖配置项,强制语言为英语,保证输出一致
docs源文档根目录(即本仓库的 docs 目录)
_build/html输出目录

其中docs源目录下的入口文件为 docs/index.md,docs/conf.py 则集中配置了 Sphinx 扩展(selector、matrix、remote_content 等 rocm_docs_custom 扩展)与主题选项。

构建完成后,用浏览器打开_build/html/index.html即可查看完整的本地文档站点。

方式三:Visual Studio Code 高效写作环境

命令行构建适合一次性验证;如果你要长期撰写文档,可以在 VS Code 中搭建一个"改完即刷新生效"的环境,借助两个扩展和两个配置文件即可实现。

1. 安装必需扩展

在 VS Code 扩展市场中安装:

  • Python(扩展 ID:ms-python.python):提供虚拟环境管理与集成终端支持;
  • Live Server(扩展 ID:ritwickdey.LiveServer):提供本地静态站点实时预览与自动刷新。

2. 配置.vscode/settings.json

在工作区的.vscode/settings.json中添加以下条目:

{ "liveServer.settings.root": "/.vscode/build/html", "liveServer.settings.wait": 1000, "python.terminal.activateEnvInCurrentTerminal": true }

各项配置含义:

  • liveServer.settings.root:设置 Live Server 服务的站点根目录(即文档输出目录)。注意它必须与下面tasks.json中构建命令的输出目录保持一致,两者需同步修改;
  • liveServer.settings.wait:设置刷新前的等待毫秒数。这是为了让 Sphinx 有足够时间重新生成站点内容,避免在构建尚未完成时浏览器就提前刷新;
  • python.terminal.activateEnvInCurrentTerminal:在集成终端中自动激活 Python 虚拟环境,使你无需手动source .venv/bin/activate即可在终端里直接构建。

3. 配置.vscode/tasks.json构建任务

将下面的构建任务写入.vscode/tasks.json,它会把"构建文档"注册为 VS Code 的默认构建任务:

{ "version": "2.0.0", "tasks": [ { "label": "Build Docs", "type": "process", "windows": { "command": "${workspaceFolder}/.venv/Scripts/python.exe" }, "command": "${workspaceFolder}/.venv/bin/python3", "args": [ "-m", "sphinx", "-j", "auto", "-T", "-b", "html", "-d", "${workspaceFolder}/.vscode/build/doctrees", "-D", "language=en", "${workspaceFolder}/docs", "${workspaceFolder}/.vscode/build/html" ], "problemMatcher": [ { "owner": "sphinx", "fileLocation": "absolute", "pattern": { "regexp": "^(?:.*\\.{3}\\s+)?(\\/[^:]*|[a-zA-Z]:\\\\[^:]*):(\\d+):\\s+(WARNING|ERROR):\\s+(.*)$", "file": 1, "line": 2, "severity": 3, "message": 4 } }, { "owner": "sphinx", "fileLocation": "absolute", "pattern": { "regexp": "^(?:.*\\.{3}\\s+)?(\\/[^:]*|[a-zA-Z]:\\\\[^:]*):{1,2}\\s+(WARNING|ERROR):\\s+(.*)$", "file": 1, "severity": 2, "message": 3 } } ], "group": { "kind": "build", "isDefault": true } } ] }

任务要点说明:

  • 与命令行版本相比,这里多传了-j auto(按 CPU 核数并行构建,加快速度),并将中间产物doctrees与输出目录收敛到工作区内的.vscode/build下,避免污染项目根目录的_build
  • group.kind设为buildisDefault: true,使其成为默认构建任务,可直接用快捷键触发。

实现细节:为什么需要两个 problemMatcher?VS Code 无法容忍 problem 信息中"可能缺失"的捕获组。如果某个警告/错误消息里没有行号,而单个正则的pattern又引用了行号捕获组,VS Code 会直接丢弃整条消息。因此这里定义了第二个正则,允许行号部分(:1:2:1)整体缺失,确保没有行号的 Sphinx 告警也能被正确采集并显示在"问题"面板中。

4. 创建 Python 虚拟环境

  1. 打开命令面板(Ctrl+Shift+P);
  2. 运行Python: Create Environment
  3. 选择venv环境类型;
  4. 选择 docs/sphinx/requirements.txt 作为依赖清单。

VS Code 会自动创建.venv并安装全部依赖,同时由于settings.json中的自动激活配置,后续集成终端打开时环境即已就绪。

5. 构建文档

通过以下任一方式启动默认构建任务:

  • 按快捷键Ctrl+Shift+B(VS Code 默认的"运行默认构建任务"快捷键);
  • 从命令面板执行Tasks: Run Build Task

构建完成后,输出将生成到.vscode/build/html/

6. 打开实时预览

在 VS Code 资源管理器中,右键.vscode/build/html/index.html,选择Open with Live Server。之后每次重新构建文档,Live Server 会自动推送更新,浏览器无需手动刷新即可看到最新内容——这得益于liveServer.settings.wait设置留给 Sphinx 的重建时间窗。

常见问题与排查提示

  1. 依赖缺失导致构建报错:如果提示缺少 Python 包,先执行pip install -r docs/sphinx/requirements.txt(Linux 下为pip3 install -r docs/sphinx/requirements.txt),该步骤只需成功执行一次。
  2. 改动 Doxygen 注释后结果未更新:若你修改了源码中的 Doxygen 注释,每次构建前应删除docs/doxygen/xmldocs/doxygen/html目录,避免 Breathe 复用陈旧缓存(见 docs/contribute/contributing.md 的相关提示)。
  3. 添加新页面后侧边栏没有出现:ROCm 文档的导航由外部目录文件 docs/sphinx/_toc.yml.in 驱动(注意其中${branch}${url}等变量会在构建时被替换),新增主题后需要在该文件中登记对应的fileurl条目。
  4. 区分.vscode/build_build:命令行方式输出到项目根目录的_build/html,VS Code 方式输出到.vscode/build/html。两者互不干扰,但 Live Server 的root配置必须与 VS Code 任务的输出目录保持一致,否则预览会 404。

构建工作流总结

场景推荐方式入口
提交 PR 后快速验收GitHub PR 摘要面板 →Details(Read the Docs 云端构建)无需本地环境
一次性本地验证venv+ Sphinx 命令行项目根目录,见"方式二"
长期写作 + 实时预览VS Code + Python/Live Server 扩展.vscode/settings.json.vscode/tasks.json

掌握这三种构建方式后,你可以完整走通"本地编写 → 本地验证 → 提交 PR → 云端复查"的 ROCm 文档贡献流程。进一步了解文档写作规范与目录结构,可继续阅读 docs/contribute/contributing.md 与 docs/contribute/toolchain.md。

【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 16:39:34

数据库实时同步怎么选?从CDC原理到Oracle实战的完整选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 16:39:19

基于SSM的高校社团管理系统:权限、CRUD与审核流实战

简介:这份毕业设计论文文档围绕SSM高校学生社团管理系统展开,面向计算机相关专业的本科与高职毕业生,以及需要完成课程设计、论文答辩的学生开发者,可用于毕业设计选题参考、论文写作借鉴与技术方案学习。资源包共1个docx文件&…

作者头像 李华
网站建设 2026/9/17 16:38:48

WLTC工况能量流测试:破解电动车续驶里程优化关键路径

简介:本资源是一份面向新能源汽车研发工程师、高校车辆工程专业师生及动力电池系统研究人员的技术分析报告,聚焦WLTC工况下纯电动汽车能量流的实测建模与多层级能效评价。报告以某纯电动SUV为对象,在AVL转毂台架上开展WLTC循环测试&#xff0…

作者头像 李华
网站建设 2026/9/17 16:36:22

用PPT打造CATIA基础教程教案:从界面认识到装配约束的实操指南

简介:三维CAD软件的教学课件,核心是把软件操作转换为可复现的学习步骤。CATIA作为机械设计领域常用工具,其基础教程若只是展示成品截图,学员往往找不到命令入口。理解特征建模、装配约束背后的操作逻辑,才能设计出真正…

作者头像 李华
网站建设 2026/9/17 16:36:19

运营商家庭业务标准化产品库设计与落地指南

简介:针对运营商家庭业务快速增长带来的产品繁杂、推广低效问题,PPT方案面向产品运营、市场策划及一线营销人员,系统给出了家庭标准化产品库的构建方案。内容涵盖家庭产品现状梳理,宽带、互联网电视、智能硬件等自有与合作产品归类…

作者头像 李华
网站建设 2026/9/17 16:35:34

2026年值得安装的9款Claude插件与工具清单

我现在的日常开发流程里,已经很难找到一块完全不碰 Claude 的环节。写原型、查代码、补测试、改配置、甚至整理文档,都有对应的插件把它接进 IDE 和命令行。2026 年再回头看,真正拉开效率差距的,不是谁把 prompt 写得漂亮&#xf…

作者头像 李华