解决:是依赖路径的问题,
-
先看includePath对不对,但是有时候会依赖外部文件,这时候入股cmake编译能够听过, 说明编译器能够找到依赖路径, 但是vscode的
IntelliSense 找不到依赖路径 → 导致编辑器提示错误、不能跳转定义、不能自动补全等。
-
需要设置 .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
}