解決:是依賴路徑的問題,
-
先看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
}