【问题标题】:VSCode C++ IntelliSense works fine except for PCL (Point Cloud Library)VSCode C++ IntelliSense 工作正常,除了 PCL(点云库)
【发布时间】:2020-07-24 01:31:12
【问题描述】:

关于 SO 本身,已经有很多关于 VSCode IntelliSense 的问题,例如,que1que2que3 等。但是,他们主要谈论的是 IntelliSense 不能正常工作;不适用于 STL;等等。

另一方面,就我而言,我已经在使用 Microsoft 的 VSCode C/C++ Extension,而 IntelliSense 可以很好地处理所有不同的内置类、函数、STL 等。但是,当涉及到 @987654325 @(点云库),不知何故,神秘地,智能感知不起作用。

如果您熟悉PCL,那么一定知道它的大部分语法都太大了。而且由于 IntelliSense 无法正常工作,如果您在键入每个字符时不注意,很有可能会出现拼写错误,例如,

pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);

事实上,即使是那些变量和函数的自动补全也不起作用——也就是说,在上面的例子中,我每次想使用它时都必须手动输入point_cloud_ptr 的每个字符。

那么,我该如何解决这个问题?或者PCL不可能?

注意:我在我的 Ubuntu 16 以及 Ubuntu 18 上都遇到了这个问题。我已经使用sudo apt install libpcl-dev 安装了PCL,并且头文件位于/usr/include/ 目录中。

【问题讨论】:

标签: c++ visual-studio-code intellisense vscode-settings point-cloud-library


【解决方案1】:

在尝试不同的事情并从 GitHub 上的 Microsoft VSCode(和 C/C++ 扩展)团队获得帮助后,IntelliSense 似乎无法正常工作可能因为扩展无法找到 PCL标题。

对于 Ubuntu,PCL 标头通常存储在 /usr/include/pcl-&lt;version&gt;。在我的 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-&lt;version&gt; 目录下的子目录。因此,替代解决方案如下:


解决方案 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多