您现在的位置是:首页 >技术杂谈 >【ROS】Ubuntu20.04 Vscode 无法代码补全网站首页技术杂谈

【ROS】Ubuntu20.04 Vscode 无法代码补全

Abaaba+ 2025-03-23 12:01:02
简介【ROS】Ubuntu20.04 Vscode 无法代码补全

前言

问题描述:
在使用 VSCode 开发 ROS 代码时,无法获得代码自动补全功能,即使正确引入了头文件,VSCode 也无法提供有效的代码提示。

参考资料:解决Ubuntu20.24中Vscode无法自动补全ROS相关代码

原因分析

根本问题在于 compile_commands.json 文件的缺失配置错误

补充说明:compile_commands.json 是在编译过程中生成的,记录了编译每个源文件时使用的函数的路径信息。VSCode 通过读取该文件,能够了解在编写 node.cpp 文件时,如何根据包含的 ROS 头文件(如 ros/ros.h)找到相关的函数。这样,VSCode 就能基于这些路径和设置提供自动补全和代码联想功能。

VSCode 只打开了 src/ 目录,找不到compile_commands.json 文件

现象:在 VSCode 中,资源管理器左上角显示的是 src/,而不是整个工作空间 catkin_ws/,文件管理区域仅显示 src/ 目录。
在这里插入图片描述

编译时没有生成 compile_commands.json 文件

现象:在工作空间的 build/ 目录下找不到 compile_commands.json 文件
在这里插入图片描述

生成了 compile_commands.json 但未正确配置路径

如果 VSCode 打开的是 ROS 工作空间 catkin_ws/,并且在 build/ 文件夹下存在 compile_commands.json 文件,那么大概率是未在 c_cpp_properties.json 中正确配置该文件路径。

问题解决

【解决】: VSCode 只打开了 src/ 目录,找不到compile_commands.json 文件

关闭 VSCode,打开终端,cd 进入 catkin_ws 工作空间,然后使用 code . 在该文件夹中重新打开 VSCode 进行编辑。

cd catkin_ws
code .

【图】

重新打开 VSCode 后,重新编译项目,并再次尝试代码补全功能。

【解决】:编译时没有生成 compile_commands.json 文件

1.打开终端并进入 ROS 工作空间 catkin_ws

cd ~/catkin_ws

2.运行以下命令来启用 compile_commands.json 的生成:

catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes

该命令会在 build/ 目录下生成 compile_commands.json 文件。

3.验证文件是否生成成功:

ls build/compile_commands.json

在这里插入图片描述

4.在 .vscode/c_cpp_properties.json 中配置 compileCommands 路径:
.vscode/c_cpp_properties.json 中添加下方红框内容

 "compileCommands": "${workspaceFolder}/build/compile_commands.json"

在这里插入图片描述

5.保存配置文件后,重新打开 VSCode,并尝试代码补全功能。

【解决】:生成了 compile_commands.json 但未正确配置路径

1.在 .vscode/c_cpp_properties.json 中配置 compileCommands 路径:
.vscode/c_cpp_properties.json 中添加下方红框内容

 "compileCommands": "${workspaceFolder}/build/compile_commands.json"

在这里插入图片描述

2.保存配置文件后,重新打开 VSCode,并尝试代码补全功能。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。