在Ubuntu中为VSCode设置C++Intellisense

Set up C++ Intellisense for VSCode in Ubuntu

本文关键字:设置 C++Intellisense VSCode 中为 Ubuntu      更新时间:2023-10-16

我想知道如何在Ubuntu中为VSCode设置Intellisense。我是VSCode的新手,也是cpp和Ubuntu的新手。我已经在这里看到这个问题被问了好几次,但我还没有看到答案。我在Ubuntu 16.04中使用ROS(Lunar),使用catkin_make(cmake扩展)。

我试着遵循github上给出的例子。首先,我尝试创建一个compile_commands.json文件,但找不到任何关于如何做到这一点的信息。我尝试了ccmakegui和cmakeqtgui,它们都没有这个选项。我尝试将set(CMAKE_EXPORT_COMPILE_COMMANDS true)添加到CMakeLists.txt中。这些努力似乎破坏了我的工作空间。

在这一点上,我放弃了首选的解决方案,并决定尝试在c_cpp_properties.json中手动编辑includePath。这在几天前起到了作用,但现在它什么都不起作用(仍然无法解析include目录中的头文件),VSCode似乎在我重新打开工作区大约5秒后删除了我添加的includePath。我已经查找了一个要复制的示例c_cpp_properties.json,但它们似乎都是针对windows的。

编辑:

它似乎无法解析目录结构。当我将.h文件放在与.cpp相同的目录中时,它可以找到它们,但当它们在include文件夹中时,会失败。此设置无法解析pylon_camero_node。h:设置和目录结构的屏幕截图

编辑2:

通过禁用我的一些扩展(C++Intellisens和CMake Tools Helper),我能够修复C_cpp_properties.json的覆盖。我注意到其他用户正在向"浏览"路径"部分和"includePath"添加相同的路径,一旦我这样做了,我的手动编辑就开始工作了(例如处理c_cpp_properties.json)。这仍然不理想,因为我必须手动查找头文件,但bash-locate使其易于管理。

编辑3:

我的includes仍然用绿色波浪形下划线,在settings.json中添加以下内容似乎解决了这个问题:

"C_Cpp.intelliSenseEngine": "Tag Parser",

它似乎允许IntelliSense提供模糊的结果。

如果有人知道一种更自动地解决这个问题的方法(也许是通过生成compile_commands.json),我很乐意听到

我现在相信我的许多问题都来自于使用cmake gui而不是catkin_make来配置工作区。我犯了另一个错误,生成compiler_commands.json的正确CMake命令是:

set(CMAKE_EXPORT_COMPILE_COMMANDS)

在重建catkin工作区并在包级CMake文件中输入这一行之后,我能够在构建目录中生成compiler_commands.json。

最后一点需要注意的是,由于ROS compiler_commands.json通常不是全貌,您可能需要为任何自动生成的msg代码添加"catkin_ws/devel/include"。