关于c ++:Visual Studio代码:如何配置includePath以获得更好的IntelliSense结果

Visual Studio Code: How to configure includePath for better IntelliSense results

我是使用Visual Studio Code的完整入门者,不知道我在做什么。
我已经搜索了一下(可能还不够),但是我找不到像我这样的人的简单解释,它说明了如何配置我每次重定向到c_cpp_properties.json文件时都需要重定向到的c_cpp_properties.json文件, 下划线的是绿色的花体。

灯泡示例

c_cpp_properties.json

我只想知道要放入.json中的内容以使IntelliSense正常工作


从:
https://code.visualstudio.com/docs/languages/cpp

Below you can see that the MinGW C++ include path has been added to browse.path for Windows:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"name":"Win32",
"includePath": [
   "${workspaceRoot}"
],
"defines": [
   "_DEBUG",
   "UNICODE"
],
"intelliSenseMode":"msvc-x64",
"browse": {
   "path": [
       "${workspaceRoot}",
       "C:\\MinGW\\lib\\gcc\\mingw32\\6.3.0\\include\\c++"
    ],
   "limitSymbolsToIncludedHeaders": true,
   "databaseFilename":""
    }
}

希望有帮助! :)


From the official documentation of the C/C++ extension:

Ok.

配置includePath获得更好的IntelliSense结果

如果在VS Code中打开文件夹时看到以下消息,则表示C ++ IntelliSense引擎需要有关包含文件所在路径的其他信息。

好。

Configure includePath for better IntelliSense

好。

包含路径在哪里定义?

包含路径是在打开的文件夹.vscode目录中名为c_cpp_properties.json的文件中的"includePath"设置中定义的。

好。

您可以使用命令面板中的"C/Cpp: Edit Configurations"命令或通过在灯泡菜单中选择"Edit"includePath" setting"来创建或打开此文件(请参见下面的屏幕截图)。定位灯泡最快的方法是滚动到源文件的顶部,然后单击#include语句下显示的任何绿色箭头。

好。

lightbulb menu

好。

当打开一个文件夹时,该扩展程序会尝试根据您的操作系统来查找您的系统头,但是它不知道您的项目所依赖的任何其他库。您可以将鼠标悬停在绿色的波浪形上或打开"问题"窗口以了解IntelliSense引擎无法打开哪些标头-有时找不到相关的标头。

好。

include error message

好。

如何指定包含路径?

您可以使用以下描述的一种技术来指定剩余路径。

好。

1.使用compile_commands.json文件提供includePaths并定义信息

该扩展可以从compile_commands.json文件获取"includePath""defines"的信息,该文件可以由许多构建系统(例如CMake和Ninja)自动生成。查找定义当前配置的部分(默认情况下,每个操作系统都有一个配置,例如" Win32或" Mac"),然后将c_cpp_properties.json中的"compileCommands"属性设置为compile_commands.json文件的完整路径。并且扩展名将使用它代替IntelliSense的"includes""defines"属性。

好。

use compileCommands setting

好。

2.使用灯泡建议自动解析includePath

尝试做的第一件事是利用灯泡路径建议来自动解析包含路径。当您打开文件夹时,扩展名将根据c_cpp_properties.json中"browse.path"设置所设置的路径,递归搜索与代码所使用的头文件相匹配的潜在包含路径。单击#include语句下的绿色花体,您将看到一个灯泡,其中提供了一些路径建议,这些路径将允许IntelliSense解析包含的文件。

好。

lightbulb suggestions

好。

如果您在灯泡中看不到路径建议,请尝试将标头可能位于其中的根文件夹添加到c_cpp_properties.json中的"browse.path"设置中。这使扩展程序可以在这些文件夹中进行递归搜索,并随着搜索过程的进行在灯泡中提供更多建议。

好。

3.手动添加包含路径

如果以上方法均不能完全解析路径,则可以在c_cpp_properties.json文件中手动指定项目所依赖的标头的路径。查找定义当前配置的部分(默认情况下,每个操作系统都有一个配置,例如" Win32或" Mac"),然后在"includePath"设置中添加路径,并在"defines"设置中定义。 ,以下屏幕截图显示了该文件的片段,该片段指定了Mac配置的路径。

好。

另外,对于MinGW,如扩展文档所述,您可以要求gcc / g ++列出其自己的包含文件:

好。

1
gcc -v -E -x c++ nul

c_cpp_properties file snippet

好。

验证包含路径是否正确解析

有两种方法可以验证是否正确解析了包含路径:

好。

  • 源文件中的绿色花体不再显示
  • 错误消息在"问题"窗口中被清除
  • 这表明IntelliSense引擎已解决了包含路径,因此您可以开始为当前翻译单元的C或C ++代码享受完整的IntelliSense。请注意,如果其他文件属于另一个翻译单元,而该文件需要配置其他包含路径,则您可能仍会看到错误。

    好。

    如果这不能解决您的问题,请在下面检查MinGW的配置,然后尝试为相应/相似的头文件和文件夹为Cygwin安装设置适当的位置。

    配置MinGW

    好。

    c_cpp_properties.json参考指南

    好。

    好。