Mil*_*lan 7 c++ intellisense point-cloud-library visual-studio-code
就SO本身而言,已经有很多关于VSCode IntelliSense的问题,例如que1,que2,que3等。但是,他们主要谈论IntelliSense一般不工作;不为 STL 工作;等等。
另一方面,就我而言,我已经在使用 Microsoft 的 VSCode C/C++ 扩展,并且 IntelliSense 对于所有不同的内置类、函数、STL 等都可以正常工作。但是,当涉及到PCL
(点云库),不知何故,智能感知不起作用。
如果你熟悉的PCL
话一定知道它的大部分语法都太大了。由于 IntelliSense 不起作用,如果您在键入每个字符时不密切注意,则很可能会出现拼写错误,例如,
pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);
Run Code Online (Sandbox Code Playgroud)
事实上,即使是那些变量和函数的自动完成功能也不起作用——也就是说,从上面的例子来看,我point_cloud_ptr
每次想使用它时都必须手动输入每个字符。
那么,我该如何解决这个问题呢?或者这是不可能的PCL
?
注意:我在Ubuntu 16和Ubuntu 18上都面临这个问题。我已经PCL
使用安装sudo apt install libpcl-dev
,头文件位于/usr/include/
目录中。
在尝试了不同的方法并从 GitHub 上的 Microsoft VSCode(和 C/C++ 扩展)团队获得帮助后,看起来 IntelliSense 不起作用,可能是因为扩展无法找到 PCL 标头。
对于 Ubuntu,PCL 标头通常存储在/usr/include/pcl-<version>
. 在我的 Ubuntu 18.04 中,我有pcl-1.8
. 因此,理想情况下,在文件中添加"/usr/include/pcl-1.8/**"
以下内容应该可行。例如"includePath"
c_cpp_properties.json
{
"configurations": [
{
.
.
"includePath": [
"${workspaceFolder}/**",
"/usr/include/pcl-1.8/**"
],
.
.
.
}
],
"version": 4
}
Run Code Online (Sandbox Code Playgroud)
中"/usr/include/pcl-1.8/**"
,**
用于/usr/include/pcl-1.8/
目录下的递归搜索。然而,当我发布这个问题时(我认为从今天开始也是如此),它不起作用。它无法遍历pcl-<version>
目录下的子目录。因此,替代解决方案如下:
解决方案 01:( 如果您只想将更改应用于当前项目,请使用此方案)
打开 C/C ++扩展配置文件:(c_cpp_properties.json
在 Linux 上,按Ctrl++并选择)ShiftPC/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
}
Run Code Online (Sandbox Code Playgroud)
解决方案 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"
]
Run Code Online (Sandbox Code Playgroud)
打开c_cpp_properties.json
并更新includePath
:
{
"configurations": [
{
.
.
"includePath": [
"${workspaceFolder}/**",
"${default}"
],
.
.
.
}
],
"version": 4
}
Run Code Online (Sandbox Code Playgroud)
PS我在 Microsoft C/C++ 扩展的官方 GitHub 问题页面上问了同样的问题,最终找到了我上面提到的解决方案(但不是理想的解决方案)。
以下是更多信息的链接:https://github.com/microsoft/vscode-cpptools/issues/5843