您现在的位置是:首页 >技术杂谈 >【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,并尝试代码补全功能。