最近开始搞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构建一次,然后再看看智能感知是不是好用多了?

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐