neovim配置c++无法找到头文件的问题解决

环境:windows 11 + MSYS2 + Neovim
使用 Mason 安装 LSP。

错误现象

在其他的编辑器里可以,在 nvim 里不行,总是显示头文件找不到。

排查定位

经确认后安装可以,甚至文件可以直接编译运行,那说明是 clangd 的问题。
输入 :LspInfo查看得到下面的信息:
![[Pasted image 20250615132059.png]]

vim.lsp: Active Clients ~

可以看见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 了。

posted @ 2025-07-14 16:51  ChickenRice  阅读(214)  评论(0)    收藏  举报