尝试了不同的方法并在 GitHub 上得到了微软 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_cpp_properties.json
是针对每个项目的C/C++配置文件,编辑它只会应用于当前项目。因此,要在所有项目中应用更改,必须先更新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 问题页面上询问过同样的问题,最终找到了(不过不是理想的)上述解决方案。
这里是更多信息的链接:https://github.com/microsoft/vscode-cpptools/issues/5843