在尝试不同的事情并从 GitHub 上的 Microsoft VSCode(和 C/C++ 扩展)团队获得帮助后,IntelliSense 似乎无法正常工作可能因为扩展无法找到 PCL标题。
对于 Ubuntu,PCL 标头通常存储在 /usr/include/pcl-<version>。在我的 Ubuntu 18.04 中,我有 pcl-1.8。因此,理想情况下,在c_cpp_properties.json 文件中的"includePath" 下添加"/usr/include/pcl-1.8/**" 应该可以工作。例如
{
"configurations": [
{
.
.
"includePath": [
"${workspaceFolder}/**",
"/usr/include/pcl-1.8/**"
],
.
.
.
}
],
"version": 4
}
在"/usr/include/pcl-1.8/**" 中,** 用于在/usr/include/pcl-1.8/ 目录下进行递归搜索。但是,当我发布问题时(我认为也是今天),它不起作用。它无法通过pcl-<version> 目录下的子目录。因此,替代解决方案如下:
解决方案 01: (如果您只想将更改应用于当前项目,请使用此解决方案)
打开 C/C++ 扩展配置文件:c_cpp_properties.json(在 Linux 上,按 Ctrl + Shift + P 并选择 C/C++: Edit Configurations (JSON) )
现在,由于递归搜索不起作用,另一种方法是指定 includePath 下的所有子目录:
{
"configurations": [
{
.
.
"includePath": [
"${workspaceFolder}/**",
"/usr/include/eigen3",
"/usr/include/pcl-1.8",
"/usr/include/pcl-1.8/pcl",
"/usr/include/pcl-1.8/pcl/2d",
"/usr/include/pcl-1.8/pcl/apps",
"/usr/include/pcl-1.8/pcl/common",
"/usr/include/pcl-1.8/pcl/compression",
"/usr/include/pcl-1.8/pcl/console",
"/usr/include/pcl-1.8/pcl/features",
"/usr/include/pcl-1.8/pcl/filters",
"/usr/include/pcl-1.8/pcl/geometry",
"/usr/include/pcl-1.8/pcl/impl",
"/usr/include/pcl-1.8/pcl/in_hand_scanner",
"/usr/include/pcl-1.8/pcl/io",
"/usr/include/pcl-1.8/pcl/kdtree",
"/usr/include/pcl-1.8/pcl/keypoints",
"/usr/include/pcl-1.8/pcl/ml",
"/usr/include/pcl-1.8/pcl/modeler",
"/usr/include/pcl-1.8/pcl/octree",
"/usr/include/pcl-1.8/pcl/outofcore",
"/usr/include/pcl-1.8/pcl/people",
"/usr/include/pcl-1.8/pcl/range_image",
"/usr/include/pcl-1.8/pcl/recognition",
"/usr/include/pcl-1.8/pcl/registration",
"/usr/include/pcl-1.8/pcl/ros",
"/usr/include/pcl-1.8/pcl/sample_consensus",
"/usr/include/pcl-1.8/pcl/search",
"/usr/include/pcl-1.8/pcl/segmentation",
"/usr/include/pcl-1.8/pcl/stereo",
"/usr/include/pcl-1.8/pcl/surface",
"/usr/include/pcl-1.8/pcl/tracking",
"/usr/include/pcl-1.8/pcl/visualization"
],
.
.
.
}
],
"version": 4
}
解决方案 02: (如果您想在全局范围内应用更改 - 跨所有项目,请使用此解决方案)
作为 C/C++ 配置文件:c_cpp_properties.json 特定于每个项目,编辑只会将更改应用于当前项目。因此,要在所有项目中应用更改,必须先更新 settings.json,然后再更新 c_cpp_properies.json。
打开settings.json并添加以下文字:
"C_Cpp.default.includePath": [
"/usr/include/eigen3",
"/usr/include/pcl-1.8",
"/usr/include/pcl-1.8/pcl",
"/usr/include/pcl-1.8/pcl/2d",
"/usr/include/pcl-1.8/pcl/apps",
"/usr/include/pcl-1.8/pcl/common",
"/usr/include/pcl-1.8/pcl/compression",
"/usr/include/pcl-1.8/pcl/console",
"/usr/include/pcl-1.8/pcl/features",
"/usr/include/pcl-1.8/pcl/filters",
"/usr/include/pcl-1.8/pcl/geometry",
"/usr/include/pcl-1.8/pcl/impl",
"/usr/include/pcl-1.8/pcl/in_hand_scanner",
"/usr/include/pcl-1.8/pcl/io",
"/usr/include/pcl-1.8/pcl/kdtree",
"/usr/include/pcl-1.8/pcl/keypoints",
"/usr/include/pcl-1.8/pcl/ml",
"/usr/include/pcl-1.8/pcl/modeler",
"/usr/include/pcl-1.8/pcl/octree",
"/usr/include/pcl-1.8/pcl/outofcore",
"/usr/include/pcl-1.8/pcl/people",
"/usr/include/pcl-1.8/pcl/range_image",
"/usr/include/pcl-1.8/pcl/recognition",
"/usr/include/pcl-1.8/pcl/registration",
"/usr/include/pcl-1.8/pcl/ros",
"/usr/include/pcl-1.8/pcl/sample_consensus",
"/usr/include/pcl-1.8/pcl/search",
"/usr/include/pcl-1.8/pcl/segmentation",
"/usr/include/pcl-1.8/pcl/stereo",
"/usr/include/pcl-1.8/pcl/surface",
"/usr/include/pcl-1.8/pcl/tracking",
"/usr/include/pcl-1.8/pcl/visualization"
]
打开c_cpp_properties.json 并更新includePath:
{
"configurations": [
{
.
.
"includePath": [
"${workspaceFolder}/**",
"${default}"
],
.
.
.
}
],
"version": 4
}
PS 我曾在微软的 C/C++ 扩展的官方 GitHub 问题页面上问过同样的问题,最终找到了我上面提到的解决方案(但不是一个理想的解决方案)。
这里是更多信息的链接:https://github.com/microsoft/vscode-cpptools/issues/5843