首页 文章

在Ubuntu中为VSCode设置C Intellisense

提问于
浏览
0

我想知道如何在Ubuntu中为VSCode设置Intellisense . 我是VSCode的新手,对cpp和Ubuntu来说相当新 . 我已经在这里问了几次这个问题,我没有看到答案 . 我在Ubuntu 16.04并使用catkin_make(一个cmake扩展)与ROS(Lunar)合作 .

我试图按照git hub上的examples进行操作 . 首先,我尝试创建一个compile_commands.json文件,但我找不到有关如何执行此操作的任何信息 . 我试过ccmake gui和cmake-qt-gui都没有这个选项 . 我尝试将set(CMAKE_EXPORT_COMPILE_COMMANDS true)添加到CMakeLists.txt . 这些努力似乎打破了我的工作空间 .

此时,我放弃了首选解决方案,并决定尝试在c_cpp_properties.json中手动编辑includePath . 这工作几天前,但现在它什么也没做(仍然无法解析include目录中的头文件),VSCode似乎删除了我重新打开工作区后大约5s添加的includePaths . 我已经找了一个例子来复制c_cpp_properties.json,但它们似乎都适用于Windows .

编辑:

它似乎无法解析目录结构 . 当我将.h文件放在与.cpp相同的目录中时,它可以找到它们但是当它们在include文件夹中时它会失败 . 此设置无法解析pylon_camera_node.h:Screen shot of settings and directory structure

编辑2:

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

编辑3:

我的包含仍然用绿色波浪线加下划线,将以下内容添加到settings.json似乎解决了这个问题:

"C_Cpp.intelliSenseEngine": "Tag Parser",

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

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

1 回答

  • 0

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

    set(CMAKE_EXPORT_COMPILE_COMMANDS)

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

    最后一点,使用ROS compiler_commands.json通常不是完整的图片,您可能需要为任何自动生成的msg代码添加“catkin_ws / devel / include” .

相关问题