您现在的位置是:首页 >技术交流 >【ROS】Ubuntu20.04 Vscode 无法代码补全网站首页技术交流
【ROS】Ubuntu20.04 Vscode 无法代码补全
【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,并尝试代码补全功能。





U8W/U8W-Mini使用与常见问题解决
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结