开发环境使用的是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 构建一次,然后再看看智能感知是不是好用多了?
https://blog.csdn.net/zazzh007/article/details/109585763