neovim配置c++无法找到头文件的问题解决
环境:windows 11 + MSYS2 + Neovim
使用 Mason 安装 LSP。
错误现象
在其他的编辑器里可以,在 nvim 里不行,总是显示头文件找不到。
排查定位
经确认后安装可以,甚至文件可以直接编译运行,那说明是 clangd 的问题。
输入 :LspInfo查看得到下面的信息:
![[Pasted image 20250615132059.png]]
vim.lsp: Active Clients ~
- clangd (id: 1) - Version: clangd version 20.1.0 (https://github.com/llvm/llvm-project 24a30daaa559829ad079f2ff7f73eb4e18095f88) windows+grpc x86_64-pc-windows-msvc
可以看见clangd觉得我用的是 MSVC,但我是 MSYS2,这当然对不上。
解决办法
首先查找自己的编译器,
在 MSYS2 终端中输入:
clangd --version
# clangd version 20.1.0
# Features: windows
# Platform: x86_64-w64-windows-gnu
可以看见目标平台。
在项目的配置文件 .clangd中添加如下语句:
CompileFlags:
Add:
- --target=x86_64-w64-windows-gnu
保存之后重新打开,发现生效成功。
当然,想要全局配置的话,在%APPDATA%\clangd\config.yaml 里写入相同语句即可。
另外一种办法
如果每个项目都要这么搞的话就太折磨人了。
这个问题的实质在于 Mason 在 windows 下默认安装的是 MSVC 编译版本。
Mason 会优先调用自己的 clangd 而不是环境里的 clangd。
所以在配置的时候显示声明 MSYS2 的 clangd 即可。
config = {
clangd = {
capabilities = { offsetEncoding = "utf-8" },
cmd = {
"path/to/ucrt64/bin/clangd.exe", -- 显示声明
"--query-driver=path/to/ucrt64/bin/g++.exe", -- 显示声明编译环境
"--background-index",
"--clang-tidy",
},
},
},
之后重启,就会发现 LSP 显示为 x86_64-w64-windows-gnu 了。

浙公网安备 33010602011771号