VSCode开发C++时让intelliSense正确识别include关系

Posted 沙漠豪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VSCode开发C++时让intelliSense正确识别include关系相关的知识,希望对你有一定的参考价值。

最近开始搞C++开发,掉头发中…

开发环境使用的是VSCode,并使用CMake插件编译工程。CMake的配置文件CMakeList.txt中已经配置了各种复杂的inclue关系,这样在源码中写include时可以不用带路径,CMake编译没问题。但是在VSCode的开发环境中,智能感知(intelliSense)并不知道这些include,于是各种错误提示include的源文件找不到,看起来很不爽、很烦人。按照一般资料,你需要自行配置VSCode中的include路径,但是对于复杂的工程,要保证时刻更新,显然太麻烦了。

解决方法:CMake配置时会在输出目录(比如build目录)下生成一个compile_commands.json文件,里面包含了完整的编译命令。intelliSense可以使用该文件中的信息来实现正确的智能感知。

具体如下:

  1. 按下Ctrl+Shift+P键,在弹出的窗口中输入“C/++: Edit Configurations",这样VSCode会自动在.vscode目录下生成一个c_cpp_properties.json文件。
  2. 打开c_cpp_properties.json,内容应该是这样的:

    "configurations": [
        
            "name": "Mac",
            "includePath": [
                "$workspaceFolder/**"
            ],
            "defines": [],
            "macFrameworkPath": [
                "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
            ],
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c11",
            "intelliSenseMode": "clang-x64",
            "configurationProvider": "ms-vscode.cmake-tools"
        
    ],
    "version": 4

  1. 在configurations中加一行配置如下(路径换成你自己的):
"compileCommands": "$workspaceFolder/build/compile_commands.json",

加了这行配置后,文件中的includePath将不再起作用。

配置完成后,用CMake构建一次,然后再看看智能感知是不是好用多了?

以上是关于VSCode开发C++时让intelliSense正确识别include关系的主要内容,如果未能解决你的问题,请参考以下文章

VSCode C++ Intellisense 无法辨别 C++20 特性

如何在 vscode 中为 IntelliSense 定义流星开发的运行时

vscode自动补全c++

VSCode使用新体验

Path intellisense不带后缀解决方案(VSCode插件)

Intellisense 在 VSCode 中不起作用 - OmniSharp 错误