VS CODE进行NRF CONNECT项目开发出现变量无法链接跳转问题及解决方法
遇到的问题:
用VS CODE 进行NRF CONNECT 项目开发时,右键变量,按F12, 无法跳转,如下图:

右键 bt_data 希望找到该结构体类型的定义,但出现提示:No definition found for "bt_data"
问题分析:
VS CODE 编译应用APPLICATION时,生成build文件夹,在该文件夹中包含json文件,如下图所示:

编译的应用位于文件夹l3_e1_sol, 编译后生成的文件位于build目录下,生成的箭头所指的数据库文件compile_commands.json用于提供完整的头文件、宏、结构体定义。该文件位于l3_e1_sol/build/l3_e1_sol目录下,文件内容如下图所示:

编译成功后,插件(Extensions)C/C++ IntelliSense可以根据生成的编译数据库compile_commands.json库文件的内容进行跳转。
因此VS CODE无法连接并跳转,可能是两个原因造成的:
- IntelliSense被禁止
- 没有生成compile_commands.json文件
解决方法:
-
将应用中的源文件放到workspace中。

a. 将应用所在的文件夹以及SDK文件夹放到workspace中


b. 保存workspace, 文件名为BT-DUND, 文件内容如下:

-
使能IntelliSense
a. 打开设置 Ctrl+, 即按住Ctrl按键和逗号","按键。打开设置页面,搜索栏中输入C_CPP.INTELLI, 如下所示

b. 先切换为tag_parser, 等待5秒,再切回Default
c. Ctrl + Shift +P, 执行C/C++: RESET INTELLISENSE DATABASE.

- 经过以上两步设置后,鼠标在变量上,便会出现该变量的提示,按F12, 便会跳转的该变量的定义。如下图所示:

上图:鼠标在变量bt_data上,会出现该变量的提示

上图:按F12, 便会跳转的该变量的定义