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可以使用该文件中的信息来实现正确的智能感知。
具体如下:
- 按下Ctrl+Shift+P键,在弹出的窗口中输入“C/++: Edit Configurations",这样VSCode会自动在.vscode目录下生成一个c_cpp_properties.json文件。
- 打开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
- 在configurations中加一行配置如下(路径换成你自己的):
"compileCommands": "$workspaceFolder/build/compile_commands.json",
加了这行配置后,文件中的includePath将不再起作用。
配置完成后,用CMake构建一次,然后再看看智能感知是不是好用多了?
以上是关于VSCode开发C++时让intelliSense正确识别include关系的主要内容,如果未能解决你的问题,请参考以下文章
VSCode C++ Intellisense 无法辨别 C++20 特性
如何在 vscode 中为 IntelliSense 定义流星开发的运行时