VSCode C++ IntelliSense 工作正常,除了 PCL(点云库)
VSCode C++ IntelliSense works fine except for PCL (Point Cloud Library)
关于SO本身,已经有很多关于VSCode IntelliSense的问题,例如, , que3等。但是,他们主要谈论的是IntelliSense一般不工作;不为 STL 工作;等等。
另一方面,就我而言,我已经在使用 VSCode C/C++ Extension by Microsoft and IntelliSense works fine for all the different in-built classes, functions, STLs, etc. But, when it comes to PCL
(点云库),不知何故,神秘地,IntelliSense 不起作用。
如果您熟悉 PCL
,那么一定知道它的大部分语法都太大了。由于 IntelliSense 无法正常工作,如果您在输入每个字符时不仔细注意,输入错误的可能性非常高,例如,
pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);
事实上,即使是那些变量和函数的自动完成功能也不起作用——也就是说,从上面的例子来看,每次我想使用它时,我都必须手动输入 point_cloud_ptr
的每个字符.
那么,我该如何解决这个问题?或者 PCL
?
不可能
注意: 我在 Ubuntu 16 和 上都遇到了这个问题Ubuntu18。我已经使用 sudo apt install libpcl-dev
安装了 PCL
,头文件位于 /usr/include/
目录中。
在 GitHub 上尝试不同的东西并从 Microsoft VSCode(和 C/C++ 扩展)团队获得帮助后,IntelliSense 似乎无法正常工作 可能因为扩展找不到PCLheaders.
在Ubuntu的情况下,PCLheaders一般存放在/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 和 select 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
}
P.S. 我在 Microsoft 的 C/C++ 扩展的官方 GitHub 问题页面上问过同样的问题,最终,找到了我上面提到的解决方案(但不是理想的解决方案)。
这里是 link 了解更多信息:https://github.com/microsoft/vscode-cpptools/issues/5843
因为vscode总是告诉我它找不到像pcl/PCLHeader.h这样的依赖。所以我尝试将 /usr/include/pcl-1.10/pcl 复制到 /usr/include/ 并且成功了。
关于SO本身,已经有很多关于VSCode IntelliSense的问题,例如
另一方面,就我而言,我已经在使用 VSCode C/C++ Extension by Microsoft and IntelliSense works fine for all the different in-built classes, functions, STLs, etc. But, when it comes to PCL
(点云库),不知何故,神秘地,IntelliSense 不起作用。
如果您熟悉 PCL
,那么一定知道它的大部分语法都太大了。由于 IntelliSense 无法正常工作,如果您在输入每个字符时不仔细注意,输入错误的可能性非常高,例如,
pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);
事实上,即使是那些变量和函数的自动完成功能也不起作用——也就是说,从上面的例子来看,每次我想使用它时,我都必须手动输入 point_cloud_ptr
的每个字符.
那么,我该如何解决这个问题?或者 PCL
?
注意: 我在 Ubuntu 16 和 上都遇到了这个问题Ubuntu18。我已经使用 sudo apt install libpcl-dev
安装了 PCL
,头文件位于 /usr/include/
目录中。
在 GitHub 上尝试不同的东西并从 Microsoft VSCode(和 C/C++ 扩展)团队获得帮助后,IntelliSense 似乎无法正常工作 可能因为扩展找不到PCLheaders.
在Ubuntu的情况下,PCLheaders一般存放在/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 和 select 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
}
P.S. 我在 Microsoft 的 C/C++ 扩展的官方 GitHub 问题页面上问过同样的问题,最终,找到了我上面提到的解决方案(但不是理想的解决方案)。
这里是 link 了解更多信息:https://github.com/microsoft/vscode-cpptools/issues/5843
因为vscode总是告诉我它找不到像pcl/PCLHeader.h这样的依赖。所以我尝试将 /usr/include/pcl-1.10/pcl 复制到 /usr/include/ 并且成功了。