ç´¢å¼åå¨åª¶
索引存储位置和重载行为说明¶
1. 索引存储在哪里?¶
clangd 的后台索引存储在项目根目录下的:
- 这个位置由
.clangd配置中的Index: Background: Build决定 .gitignore已包含.cache/(第 29 行),所以索引不会被提交到 git 仓库 ✓- 当前该目录为空(0 个文件),因为之前使用的是损坏的 clangd 21,从未成功索引过
2. 每次重载窗口都会重新索引吗?¶
不会完全重新索引。 具体行为如下:
| 场景 | 行为 |
|---|---|
| 首次重载(当前状态,索引为空) | 会进行全量索引,较慢(5908 个文件,约需几分钟) |
| 后续重载(已有索引) | 加载已有索引,只对变化的文件增量索引,很快 |
| 修改某个文件后 | 只重新索引该文件及其依赖,其余复用缓存 |
重载窗口(Developer: Reload Window)会重启 clangd 进程,但索引文件会持久保留在 .cache/clangd/index/ 中,下次启动时直接加载。
3. 关于索引规模(重要)¶
你的 compile_commands.json 包含 5908 个文件: - 项目自身代码:121 个(2.0%) - 第三方库:5787 个(98.0%),其中 llvm-project 4481 个、iree 1051 个
这意味着首次全量索引会花较长时间(主要是索引 LLVM/MLIR/IREE 源码)。但保留第三方索引是必要的,因为编译器项目经常需要跳转到 LLVM/MLIR 的定义(如 mlir::Value、PatternRewriter 等)。
4. 建议操作¶
- 重载窗口:
Ctrl+Shift+P→Developer: Reload Window - 首次耐心等待:clangd 15 启动后会在后台索引,状态栏会显示进度。首次可能需要 5-10 分钟(取决于磁盘速度)。
- 验证索引完成:当 VSCode 状态栏的 clangd 图标不再显示 "indexing" 时,索引完成。
- 后续重载很快:之后每次重载窗口只需加载已有索引,几秒内即可使用跳转功能。
💡 如果你想确认索引是否在工作,可以在重载后查看
.cache/clangd/index/目录,应该会逐渐出现.idx索引文件。