关于Ubuntu22.04在vscode中进行ROS2 C++节点学习时C/C++插件不起作用的解决方法
注意:本文章解决的插件状态是微软官方的 C/C++ 扩展 (IntelliSense, debugging, and code browsing) 已经启用,按下快捷键Ctrl+Shift+P后输入C/C++: Reset IntelliSense Database无搜索结果,并且是在ubuntu的vscode进行的操作。
如果是SSH/远程开发,需要注意命令可能需要在远程端的命令面板里运行。
在进行以下操作前检查插件的状态 :
操作一:在 VS Code 左侧活动栏点击 Extensions(扩展) 图标(四个方块那个),搜索 @installed C++。
-
确保 Microsoft 出品的 C/C++ 插件显示为“已启用”。
-
如果旁边有“需要重新加载”的提示,点一下它。
操作二:确保已安装必要的依赖
对于ROS 2,这通常意味着你需要有ROS 2的桌面完整安装,这包括了所有开发工具和库。
运行sudo apt update && sudo apt install ros-humble-desktop-full来确保所有依赖都是最新的。
一、确保插件已”唤醒“
VS Code的插件是懒加载的,如果你只是打开了一个空的编辑器,或者打开的是一个纯文本文件,C/C++: Reset IntelliSense Database 是不会出现在 Ctrl+Shift+P 的列表里的。
操作三:确保你当前打开并聚焦在一个.cpp或.h文件上
接着强制刷新 VS Code 的渲染进程。
-
按下
Ctrl + Shift + P。 -
输入
Developer: Reload Window并回车。
(进行一个操作过后重启一下vscode,或者对于当前窗口进行一个刷新)
二、插件冲突
如果你之前用的是 clangd 插件,这可能会导致头文件报错、C++插件不起作用。
它和微软官方的 C/C++ 插件是“竞争关系”,通常我们会禁用其中一个来避免冲突。
!!虽然禁用了 clangd,但如果微软的 C/C++ 插件发现配置里依然指定要用 clangd,它可能会处于“假死”状态。
-
按下
Ctrl + ,(逗号) 打开设置。 -
在搜索框输入:
intelliSenseEngine。 -
确保 C_Cpp: Intelli Sense Engine 被手动设置成了
注意: 如果它被设置成了default。Disabled,你所有的 C/C++ 菜单和配置项(如Edit Configurations)都会消失。
重启过后依旧不起作用,考虑其他会导致插件假死的原因:
在用 Ubuntu 写 ROS 2,有一个细节非常关键:
-
环境变量: 如果你是在桌面图标直接点开的 VS Code,它可能拿不到 ROS 的路径。
-
正确做法: 关闭 VS Code。打开终端,输入:
source /opt/ros/humble/setup.bash # 换成你的版本
code ~/my_ros_ws # 从终端打开你的工作空间
现在请尝试: 按下 Ctrl + Shift + P 输入 C/C++: Edit。如果还是搜不到,考虑插件版本的问题
三、回退到先前版本(在这里进行尝试的是1.2.0版本)
第一步:
-
在插件面板找到 C/C++ 插件。
-
点击插件右下角的齿轮,找到下载特定版本,点击并找到1.2.0版本进行下载
-
等待安装完成,右下角会出现 Reload Required,点击重启。
第二步
VS Code 有时候会因为旧的配置冲突而“装死”。请尝试手动重置插件全局配置:
-
按下
Ctrl + ,(逗号) 进入设置。 -
搜索
C_Cpp.intelliSenseEngine。 -
点一下左侧的蓝色线条或小齿轮,选择 "Reset Setting" (重置设置)。
-
重启 VS Code。
四、验证
如果插件真的活过来了,你的代码应该会发生以下变化:
-
代码变色:
int、main、include会有不同的颜色。 -
出现命令: 按下
Ctrl + Shift + P,输入C/C++,如果能看到一长串列表(如下图),说明彻底修好了。
最后的一点建议: 既然你在写 ROS 2,如果实在修不好官方插件,可以把 clangd 重新启用(但要确保把微软的这个 C/C++ 插件里的 IntelliSense Engine 关掉,避免神仙打架)。
更多推荐
所有评论(0)