使用Cursor或者VScode的开发者,经常遇到代码无法跳转,然后还搞不清楚问题出在哪里,以为重启一下IDE就会自动恢复,或者不得不用source insight做辅助,经常会遇到多个同名函数方法,导致跳转时需要反复选择,其实这一切都是可以完美解决的。
根本原因是代码的索引,如何建立代码索引呢
- 我们都知道,source insight是靠人工去添加指定的代码到工程,实现精准定位,Cursor或者VScode不能这样,只能整个目录打开
- 其实只有参与编译的代码才需要跟踪跳转,往往是一个工程里面有大量预留的代码,都是不参与编译的,这些代码根本不需要跟踪
- 如何找出这些参与编译的代码呢,肯定不可能像source insight那样去逐个添加累死人了。
利用clangd+compile_commands.json,实现精准跳转
- 参考深度解析 compile_commands.json
- clangd 配合 compile_commands.json 的核心思路是:先让构建系统生成这个文件,再让 clangd 找到它,这样代码补全、跳转和诊断就能精确匹配真实的编译参数(头文件路径、宏定义、标准版本等)
- 安装C/C++插件、安装clangd插件,注意这两个插件都是官方Anysphere的,安装后,Cursor会提示你要下载clangd包,它会自动下载,如果下载失败,可以手动下载,然后解压到你的任意目录下,之后把这个目录添加到用户环境变量,这样就能自动找到clangd.exe了
- 打开cmd,输入clangd.exe --version如果版本输出正常就说明可以了。
- 注意,有些编译器编译出来的参数可能不被标准的clangd支持,导致解析失败,遇到这种问题直接问Cursor,参考以下问法
解决一下clangd报错问题,导致索引无法建立,导致代码跳转失效