vscode 打开项目时候,有部分外部依赖包找不到定义或者声明,但是能使用cmake正常编译并且运行

解决:是依赖路径的问题,

  1. 先看includePath对不对,但是有时候会依赖外部文件,这时候入股cmake编译能够听过, 说明编译器能够找到依赖路径, 但是vscode的

    IntelliSense 找不到依赖路径 → 导致编辑器提示错误、不能跳转定义、不能自动补全等。

  2. 需要设置 .vscode目录下的c_cpp_properties.json 文件, 在其中添加compileCommands。

可以在 执行cmake时候加上
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON . 意味执行cmake并且在. (当前目录)中声称compile_commands.josn

(注意最后的点)

之后会在当前目录中有一个 compile_commands.json(这个文件应该出现在执行上面一句cmake的目录下),

在c_cpp_properties.json 中添加上即可

例如,我在${workspaceFolder}/build 目录下执行的cmake,可以如下写c_cpp_properties.json

复制代码
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++14",
            "intelliSenseMode": "linux-gcc-x64",
            "compileCommands": "${workspaceFolder}/build/compile_commands.json"
        }
    ],
    "version": 4
}