开发环境使用的是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,内容应该是这样的:
    1. {
    2. "configurations": [
    3. {
    4. "name": "Mac",
    5. "includePath": [
    6. "${workspaceFolder}/**"
    7. ],
    8. "defines": [],
    9. "macFrameworkPath": [
    10. "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
    11. ],
    12. "compilerPath": "/usr/bin/clang",
    13. "cStandard": "c11",
    14. "intelliSenseMode": "clang-x64",
    15. "configurationProvider": "ms-vscode.cmake-tools"
    16. }
    17. ],
    18. "version": 4
    19. }
    1. 在 configurations 中加一行配置如下(路径换成你自己的):
    1. "compileCommands": "${workspaceFolder}/build/compile_commands.json",

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

    配置完成后,用 CMake 构建一次,然后再看看智能感知是不是好用多了?
    https://blog.csdn.net/zazzh007/article/details/109585763