在Ubuntu中为VSCode设置C++Intellisense
Set up C++ Intellisense for VSCode in Ubuntu
我想知道如何在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"。
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++/Linux中设置单调时钟的一些技巧
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 嵌套在类中时无法设置成员数据
- 需要帮助设置在C++中使用的Potrace
- 如何在自删除后将对象设置为nullptr
- 将指针设置为"nullptr"并不能防止双重删除?
- 如何在Ubuntu中使用cmake设置qt4
- ld:bind_at_load和-bitcode_bundle(Xcode设置ENABLE_bitcode=YES)不能
- 如何在boost beast http请求中设置http头
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 如何在24位SDL_Surface上设置像素的颜色
- std::设置自定义比较器
- 如何设置一个范围来提取我想要获得的信息
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- 通过选项卡的文本设置QTabWidget顺序
- 将特征矩阵的向量设置为0
- 我可以检测和更改 gcc/g++ 中结构的当前数据对齐设置吗?