直接把你的工作空间(project-name_ws)在vscode里面打开是不能进行代码导航的。需要进行以下配置步骤——
1.首先,在ROS工作空间的build文件夹下生成compile_commands.json文件,方法是采用如下的编译命令:
catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes
通过此编译选项进行编译后,会看到build文件夹下生成了一个compile_commands.json文件。
2.此时在vscode里面打开文件夹project-name_ws(即你的工作空间),然后找到源文件夹src下的一个源文件(.cpp文件)打开,发现包含的头文件下方都有红色波浪线(表示无法找到响应头文件)如图所示。
3.此时点击红色灯泡标识,点击edit c_cpp_properties.json选项,vscode会自动在配置文件夹中新建.vscode/文件夹,同时在里面初始化了c_cpp_properties.json文件,如图所示。
4.打开c_cpp_properties.json,添加如下代码:
"compileCommands": "${workspaceFolder}/build/compile_commands.json"
插入后效果如下:
完成上述步骤后,就可以进行ros相关的头文件实现代码导航了。
PS:有时候直接在c_cpp_properties.json中,添加"compileCommands": "${workspaceFolder}/build/compile_commands.json"不起作用,不知道什么原因,但是把这行代码换成如下代码就好了(即把${workspaceFolder}换成绝对路径):
"compileCommands": "绝对路径/build/compile_commands.json"
/***************************************************************debug分界线**********************************************************************/
上述步骤是你的工程已经是一个完整的工程了,即从别的地方拷贝过来的,或者已经在其他编译器里面编译运行过的才可以用,否则,是需要把CMakeLists.txt文件配置才行的,不然即使按照上述步骤一步不差的运行了也不行,因为你还没在CMakeLists.txt文件理配置,依然找不到你的自定义消息和服务消息,以及你的源代码文件。需要在CMakeLists.txt文件里把该链接的库和依赖设置好,把该添加的项都添加好才行。