Clangd Fix

前几天从湊妈那里听说了clangd这个东西,Google了一下,感觉还挺强大的,之前一直用的VSCode自带的插件,于是决定更换一下(

首先因为我用的是vscode,官方的C/C++插件有C/C++ IntelliSense功能,会和clangd冲突,所以我们先卸载这玩意,然后在扩展商店搜索clangd安装

接着会出现一个提示,选择install即可

最后选择Reload window

按理来说到这里已经可以直接用了,但是…

clangd他找不到我的头文件… Google后得知我们需要配置Clangd: Fallback Flags这个东西,使得Clangd知道我们的头文件在哪里

因为我使用的是msys2故添加

1
2
3
-IC:\msys64\mingw64\include
-IC:\msys64\mingw64\include\c++\14.2.0
-IC:\msys64\mingw64\include\c++\14.2.0\x86_64-w64-mingw32

接着重启,测试! 唉,怎么还有错误… 报错:

1
"In included file: expected ';' after top level declarator"

这也太怪了吧,标准库的头文件怎么可能出错呢 一番查询得知在 https://github.com/clangd/vscode-clangd/issues/404 已有人问过相同的问题了,似乎是由于clangd默认会把我们的编译器识别成x86_64-pc-windows-msvc而不是x86_64-pc-windows-gnu

A guess: to get clangd to compile MinGW headers, you probably need to specify a –target that’s different from the default (which seems to be x86_64-pc-windows-msvc from the logs).

因此我们只需要在项目文件夹下创建compile_flags.txt输入内容

1
2
-target
x86_64-pc-windows-gnu

问题解决