nlohmann_json 离线文档集(docset)构建实战:为 Dash / Zeal 一键生成可离线检索的 C++ JSON API 文档
人工智能AI Agent多模态语音AI 应用【免费下载链接】ten-frameworkOpen-source framework for conversational voice AI agents项目地址https://gitcode.com/TEN-framework/ten-framework点击查看免费下载在 TEN-framework 的third_party目录中nlohmann_jsonJSON for Modern C以 header-only 方式被多个 C 扩展引用。当你在 IDE 之外查阅它的 API 时除了访问在线文档还可以把整份 API 文档打包成docset——一种被 Dash、Velocity、Zeal 等文档浏览器原生支持的离线文档包支持全库检索、按类/函数/宏分类跳转。本文基于仓库内 docset 目录 的说明与配套工程文件完整拆解 docset 的生成原理、构建流水线、索引数据结构与安装使用方式读完即可在本地复现nlohmann_json.docset的全过程。docset 是什么面向文档浏览器的离线文档包docset 本质上是一个约定结构的文件夹包含三部分核心资产HTML 文档页存放于Contents/Resources/Documents/下是文档浏览器的渲染内容SQLite 索引名为docSet.dsidx的数据库文件记录每条条目的name名称、type类型如 Class/Function/Method/Operator/Macro与path对应 HTML 路径是实现输入即搜的关键元数据文件Info.plist与docset.json向浏览器声明文档包的身份、入口页与回退链接。关联文档明确说明了它的用途本目录存放创建 docset 所需的全部文件生成的 docset 可被 Dash、Velocity、Zeal 等文档浏览器直接打开使用。关联文档还提到该项目的一个近期版本同时收录于 Dash 官方用户贡献集合Dash-User-Contributions即社区可以直接下载现成的 docset而不必自行构建。仓库内的 docset 工程结构third_party/nlohmann_json/docs/docset/目录下共有 7 个文件各自职责如下文件职责Makefile构建流水线生成索引、组装 docset、打包 tgz、安装到 Zeal、索引完整性校验Info.plistdocset 身份元数据XML plist 格式docset.jsondocset 发布元数据名称、版本、归档文件名、作者、别名docSet.sql234 条索引记录的 SQL 脚本是docSet.dsidx的数据源README.md使用说明与许可证声明icon.png / icon2x.pngdocset 图标含 Retina 2x 版本随包复制进 docset 根目录从中可以看到一条清晰的链路文档源来自 mkdocs 站点 → SQL 脚本生成 SQLite 索引 → Makefile 将它们组装为符合规范的 docset 文件夹 → 打包成.tgz分发。一键构建make nlohmann_json.docset关联文档给出了核心构建命令make nlohmann_json.docset执行后会在当前目录下依次产出docSet.dsidx、JSON_for_Modern_C.docset文件夹与最终的JSON_for_Modern_C.tgz归档all目标的产物。需要特别说明的是Makefile 顶部对平台差异做了处理SED ? $(shell which gsed 2/dev/null || which sed)——在 macOS 上优先使用 GNU 版gsed找不到时才回退到 BSD 版sed以保证后续sed替换操作在两个平台行为一致。从 Makefile 的依赖关系看构建的前置条件是系统安装了sqlite3命令行工具用于把docSet.sql灌入索引库mkdocs 文档站点可用$(MAKE) build -C ../mkdocs会触发 mkdocs/Makefile 的build目标需要 Python 虚拟环境中的 mkdocsmake与bash环境。构建流水线逐层拆解Makefile 中JSON_for_Modern_C.docset目标完整描述了 docset 的组装过程可分为 6 个阶段① 生成 SQLite 索引docSet.dsidx: docSet.sql sqlite3 docSet.dsidx docSet.sql将 docSet.sql 中的建表语句与全部INSERT记录导入docSet.dsidx。脚本首行即DROP TABLE IF EXISTS searchIndex;保证重复构建不会残留旧数据并针对(name, type, path)建立了唯一索引anchor。② 组装目录骨架rm -fr JSON_for_Modern_C.docset JSON_for_Modern_C.tgz mkdir -p JSON_for_Modern_C.docset/Contents/Resources/Documents/ cp icon*.png JSON_for_Modern_C.docset cp Info.plist JSON_for_Modern_C.docset/Contents先清理旧产物再按 Apple 的 docset 目录规范创建Contents/Resources/Documents/结构并把图标与Info.plist放到对应位置。③ 构建并拷贝文档$(MAKE) build -C ../mkdocs cp -r ../mkdocs/site/* JSON_for_Modern_C.docset/Contents/Resources/Documents递归调用 mkdocs/Makefile 的build目标生成静态站点然后把site/下全部产物拷入 docset 的 Documents 目录。④ 用 CSS 补丁隐藏导航 UIecho -e \n\nheader, footer, nav.md-tabs, ... { display: none; } ...main.*.min.css echo -e \n\ndiv.md-sidebar div.md-sidebar--secondary, div.md-main__inner { top: 0; margin-top: 0 } ...docset 的 HTML 页面会渲染在文档浏览器内嵌的 WebView 中因此必须把 mkdocs Material 主题自带的页头、页脚、顶部标签栏与主侧边栏隐藏掉只保留正文与右侧目录让界面与浏览器自身布局融为一体。⑤ 重写页面标题find .../Documents -type f -exec $(SED) -i s| - JSON for Modern C/title|/title| {} 默认情况下每个页面的title都以- JSON for Modern C结尾这里统一去掉随后再遍历 mkdocs 页面清单用searchIndex表中的名称替换 HTML 标题实现标题即 API 条目名便于浏览器在标签页与搜索结果中展示准确的条目名。⑥ 清理与打包rm JSON_for_Modern_C.docset/Contents/Resources/Documents/sitemap.* cp docSet.dsidx JSON_for_Modern_C.docset/Contents/Resources/ tar --exclude.DS_Store -cvzf JSON_for_Modern_C.tgz JSON_for_Modern_C.docset移除对离线包无意义的sitemap文件把索引库放回标准位置最后排除 macOS 的.DS_Store元数据文件打包成 gzip 压缩包。索引的内容覆盖一份完整的 API 地图docSet.sql 共 234 条INSERT按type字段可分为四类核心类basic_json、json_pointer、json_sax、adl_serializer、byte_container_with_subtype、ordered_json、ordered_map、json以及std::hashbasic_json等标准库特化成员条目basic_json的构造/析构、at、get、parse、dump、sax_parse、flatten/unflatten、patch、merge_patch、to_cbor/to_msgpack/to_bson/to_ubjson/to_bjdata等全部成员方法、类型别名与枚举value_t、input_format_t、error_handler_t、parser_callback_t均逐一登记运算符与字面量operator[]、operator、C20 三路比较operator、operator_json与operator_json_pointer等宏与指南JSON_ASSERT、JSON_DIAGNOSTICS、NLOHMANN_DEFINE_TYPE_INTRUSIVE等 20 余个宏以及 Parsing、Binary Formats、JSON Patch、JSON Pointer、Element Access 等功能指南页。这份索引与 mkdocs.yml 中的nav结构一一对应——导航配置里出现的每一个 API 页面几乎都能在 SQL 中找到同名同路径的索引记录保证站点里有、检索里也有。文档源的生成mkdocs 站点docset 的 HTML 正文并非手写而是由 mkdocs 从 Markdown 源编译而来。仓库内 docs/mkdocs 目录包含完整的 mkdocs 工程主题与插件mkdocs.yml 使用 Material 主题启用了navigation.instant、navigation.tabs等特性并配置了search、minify、git-revision-date-localized、redirects插件redirects把api/basic_json/operator_gtgt.md等历史路径重定向到新位置保证旧索引/旧书签不失效构建与预览mkdocs/Makefile 提供了serve本地预览、build产出site/、prepare_files把../examples/*.cpp与../json.gif拷贝进文档、install_venv创建 Python 虚拟环境并安装 mkdocs 依赖等目标结构校验构建前会执行python3 ../scripts/check_structure.py校验文档目录结构。因此修改任何 Markdown 文档后重新make nlohmann_json.docset即可把最新内容同步进离线包。元数据解析Info.plist 与 docset.json两个元数据文件回答这个 docset 是谁、从哪里进入、找不到本地页时去哪三个问题。Info.plist 关键字段字段值含义CFBundleIdentifiernlohmann_json包唯一标识CFBundleNameJSON for Modern C浏览器中显示的名称DocSetPlatformFamilyjson平台家族分类用于与其他 docset 区分isDashDocsettrue声明为 Dash 兼容 docsetdashIndexFilePathindex.html打开 docset 时的默认入口页DashDocSetFallbackURLnlohmann_json 官方文档站点本地索引未命中时回退的在线地址isJavaScriptEnabledtrue允许文档页内执行 JavaScript如搜索与代码高亮docset.json 则面向发布场景记录当前版本为3.11.3、归档文件名为JSON_for_Modern_C.tgz、作者为 Niels Lohmann并声明aliases: [nlohmann/json]便于包管理器按别名识别。安装到 Zealinstall_docset_zeal 目标Makefile 专门提供了把 docset 安装到 Zeal 文档浏览器的目标install_docset_zeal: JSON_for_Modern_C.docset docset_root$${XDG_DATA_HOME:-$$HOME/.local/share}/Zeal/Zeal/docsets; \ rm -rf $$docset_root/JSON_for_Modern_C.docset; \ mkdir -p $$docset_root; \ cp -r JSON_for_Modern_C.docset $$docset_root/安装路径优先取自XDG_DATA_HOME环境变量未设置时回退到~/.local/share再拼接 Zeal 的 docsets 目录安装前先清空旧版本避免重复包冲突。Dash 与 Velocity 用户则可直接打开生成的JSON_for_Modern_C.docset文件夹完成导入。索引完整性校验两个自查目标为了让 docset 的索引与文档页面不脱节Makefile 还内置了两个质量校验目标list_missing_pages遍历 mkdocs 的 Markdown 页面清单找出页面存在但索引中无对应记录的条目并输出防止新文档页被遗漏list_removed_paths反向遍历searchIndex中的路径找出索引仍指向但页面已被删除的记录防止出现点击后 404 的死链。二者结合使用即可在发布前保证索引与站点内容双向一致。在 TEN-framework 中的实际集成方式nlohmann_json 在 TEN-framework 中不是编译型依赖而是 header-only 集成。third_party/nlohmann_json/BUILD.gn 通过cmake_project声明的options [ JSON_BuildTestsOFF ]关闭了测试构建run_build false表示无需实际编译仅把${root_gen_dir}/cmake/nlohmann_json/install/include暴露为头文件搜索路径——#include nlohmann/json.hpp即可使用无需链接任何库。仓库内多个 C 扩展都依赖它例如 simple_echo_cpp、simple_http_server_cpp 与 ffmpeg_client 均通过nlohmann_json_header配置引用。也就是说TEN-framework 的 C 扩展开发者正是这套 API 文档的典型读者——在离线环境或构建机上调阅basic_json、json_pointer、patch等接口时本地 docset 比在线文档更快更稳定。许可证说明关联文档末尾补充了许可证信息docset 使用的 JSON 矢量 Logo 来自 Wikimedia Commons属于公共领域public domain不构成版权约束docset 本身的内容基于 nlohmann_json 的 MIT 许可文档生成可按项目自身许可证使用。若要在团队内部分发JSON_for_Modern_C.tgz注意保留 nlohmann_json/LICENSE.MIT 等许可文本即可。小结从一条make nlohmann_json.docset命令出发本文梳理了 docset 的完整技术链路SQLite 索引的生成与 234 条 API 条目的覆盖、mkdocs 站点到 HTML 正文的编译、Info.plist/docset.json的元数据语义、CSS 隐藏导航与标题重写的细节、Zeal 安装路径规则以及索引双向一致性校验。对 TEN-framework 的 C 扩展开发者而言这份离线文档包既是查阅basic_json全量 API 的高效工具也是理解文档工程化如何与 header-only 第三方库集成的完整示例。赞分享人工智能AI Agent多模态语音AI 应用【免费下载链接】ten-frameworkOpen-source framework for conversational voice AI agents项目地址https://gitcode.com/TEN-framework/ten-framework点击查看免费下载相关推荐JSON for Modern C 离线 Docset为 Dash、Velocity 与 Zeal 构建文档索引的完整流程JSON for Modern C 离线 Docset为 Dash、Velocity 与 Zeal 构建文档索引的完整流程 docs/docset htt序列化终极MixTeX使用指南免费离线LaTeX OCR识别神器终极MixTeX使用指南免费离线LaTeX OCR识别神器 还在为复杂的数学公式识别而烦恼吗MixTeX LaTeX OCR为您带来革命性的解决方案这款创【免费下载】 推荐神器Zeal-docset-CN - 中文版离线文档库推荐神器Zeal docset CN 中文版离线文档库 在编程世界里查找API、框架或语言的官方文档是我们日常工作中不可或缺的一部分。然而网络环境不稳定或文档知识库上一篇终极魔兽争霸3兼容性优化指南WarcraftHelper让你的经典游戏重获新生下一篇Sunshine游戏串流3步打造你的跨平台私人游戏云创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

从零搭建可复用的skills技能体系:智能体架构与工程实践

从零搭建可复用的skills技能体系:智能体架构与工程实践

多模态模型正从单独的技术能力,走向完整的产品化组织方式。这篇围绕标题skills展开的项目复盘,记录了我从零搭建一套可复用、可维护、可升级的 AI 功能体系的过程。核心关键词:skills、智能体架构、提示词工程、功能编排、多模态交互。如果你…

2026/10/14 10:46:18 阅读更多 →
text-to-cad 实战:从自然语言到 STEP 模型的完整技术路线

text-to-cad 实战:从自然语言到 STEP 模型的完整技术路线

1. 从一句话到三维模型:text-to-cad 到底在解决什么问题第一次听到 text-to-cad 这个词,我脑子里蹦出来的画面是:对着电脑敲一句“给我画一个 806010 的法兰盘,中心开直径 30 的孔,四角各一个 M6 沉头孔”,…

2026/10/14 10:46:17 阅读更多 →
WorkBuddy副业实战:四条路径从零到月入5000

WorkBuddy副业实战:四条路径从零到月入5000

1. 先搞清楚 WorkBuddy 到底能干什么,再谈副业很多人第一次打开 WorkBuddy,看到的是一个对话窗口加一排功能按钮,心里想的是“这不就是个聊天机器人吗”。我一开始也这么觉得,直到把它当成一个“能调用工具、能挂载技能、能跑工作…

2026/10/13 16:28:10 阅读更多 →

最新新闻

CMS技术演进:从静态生成到云原生架构

CMS技术演进:从静态生成到云原生架构

1. 内容管理系统的前世今生1993年,伊利诺伊大学的学生们为了管理NCSA官网的新闻更新,编写了一个简单的网页发布脚本。这个看似不起眼的工具,后来被公认为世界上第一个内容管理系统(CMS)的雏形。当时没人能预料到&#…

2026/10/14 10:45:54 阅读更多 →
agent-skills 实战:从零构建可靠的 AI Agent 能力体系

agent-skills 实战:从零构建可靠的 AI Agent 能力体系

1. 从零理解 agent-skills:它到底是什么,为什么值得关注 第一次看到 “agent-skills” 这个词,很多人会下意识把它当成某个具体框架或者某个开源库的名字。但如果你最近在关注 AI 应用开发这个圈子,会发现它其实更像是一个正在快速…

2026/10/14 10:45:54 阅读更多 →
收藏 | 超详细解析LLM与Agent,小白也能轻松入门AI开发

收藏 | 超详细解析LLM与Agent,小白也能轻松入门AI开发

本文系统介绍了LLM(大型语言模型)和AI Agent的核心概念、特点及区别。LLM是经过海量文本训练的神经网络,擅长预测文本序列,但知识静态、被动响应。AI Agent则以LLM为核心,能自主规划、调用工具、自我优化,完…

2026/10/14 10:45:54 阅读更多 →
从AI设计到CAD绘制与Bug检测:开源工具实操指南

从AI设计到CAD绘制与Bug检测:开源工具实操指南

过去两年我一直在留意一个趋势:AI 已经不是只会在聊天框里写东西了,而是真的开始进入那些需要“职业手活”的岗位。最有代表性的三个方向,就是标题里说的这三个——AI 当设计师、AI 画 CAD、AI 测 Bug。对应到开源社区里,我也确实…

2026/10/14 10:45:54 阅读更多 →
神经网络前向传播详解:从手算到Python代码实现

神经网络前向传播详解:从手算到Python代码实现

开头这200来字我得说明白一件事:很多人学神经网络,一上来就被反向传播劝退,看了一堆偏导数、链式法则就开始怀疑人生。其实大可不必。我见过太多初学者最后能啃下深度学习,靠的不是一开始就把梯度背下来,而是老老实实把…

2026/10/14 10:45:54 阅读更多 →
Shell脚本多行注释技巧与工程实践

Shell脚本多行注释技巧与工程实践

1. Shell脚本多行注释的必要性与挑战 在Bash和KornShell(KSH)脚本开发中,我们经常遇到需要临时禁用大段代码或添加详细说明文档的情况。与大多数编程语言不同,Shell脚本原生并不支持类似C语言的/* */或Python的 这样的多行注释语法…

2026/10/14 10:44:53 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/14 7:53:34 阅读更多 →