neovim配置c++無法找到頭文件的問題解決
環(huán)境:windows 11 + MSYS2 + Neovim
使用 Mason 安裝 LSP。
錯誤現(xiàn)象
在其他的編輯器里可以,在 nvim 里不行,總是顯示頭文件找不到。
排查定位
經(jīng)確認(rèn)后安裝可以,甚至文件可以直接編譯運行,那說明是 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,這當(dāng)然對不上。
解決辦法
首先查找自己的編譯器,
在 MSYS2 終端中輸入:
clangd --version
# clangd version 20.1.0
# Features: windows
# Platform: x86_64-w64-windows-gnu
可以看見目標(biāo)平臺。
在項目的配置文件 .clangd中添加如下語句:
CompileFlags:
Add:
- --target=x86_64-w64-windows-gnu
保存之后重新打開,發(fā)現(xiàn)生效成功。
當(dāng)然,想要全局配置的話,在%APPDATA%\clangd\config.yaml 里寫入相同語句即可。
另外一種辦法
如果每個項目都要這么搞的話就太折磨人了。
這個問題的實質(zhì)在于 Mason 在 windows 下默認(rèn)安裝的是 MSVC 編譯版本。
Mason 會優(yōu)先調(diào)用自己的 clangd 而不是環(huán)境里的 clangd。
所以在配置的時候顯示聲明 MSYS2 的 clangd 即可。
config = {
clangd = {
capabilities = { offsetEncoding = "utf-8" },
cmd = {
"path/to/ucrt64/bin/clangd.exe", -- 顯示聲明
"--query-driver=path/to/ucrt64/bin/g++.exe", -- 顯示聲明編譯環(huán)境
"--background-index",
"--clang-tidy",
},
},
},
之后重啟,就會發(fā)現(xiàn) LSP 顯示為 x86_64-w64-windows-gnu 了。

浙公網(wǎng)安備 33010602011771號