clangd 禁用所有编译参数报错

clangd 禁用所有编译参数报错

写在前面 因为本人喜欢用现在非常受欢迎的neovim版本lazyvim,所以编辑esp32(esp idf)项目时,发现一个很强迫症的问题。 因为esp32项目并非使用clang作为编译器,但是neovim的语言服务器clangd很优秀,所以,直接使用neovim搭配clangd打开esp32项目源

写在前面

因为本人喜欢用现在非常受欢迎的neovim版本lazyvim,所以编辑esp32(esp idf)项目时,发现一个很强迫症的问题。
因为esp32项目并非使用clang作为编译器,但是neovim的语言服务器clangd很优秀,所以,直接使用neovim搭配clangd打开esp32项目源文件时,会出现如下报错:
clangd 禁用所有编译参数报错-20240730021609082.webp

因为clangd需要读取build/compile_commands.json来生成索引,读取到了一系列clang编译器不认识的编译参数,所以发生了大量报错。然而,这些报错对我们的esp32项目并没有影响,最终,直接选择忽略这些报错。
下面开始操作。


打开config.yaml文件

vim ~/Library/Preferences/clangd/config.yaml
其他操作系统类似,具体路径请自行查找或 Google

添加以下内容

CompileFlags:
  Add: []
  Remove: [-mlongcalls, -fstrict-volatile-bitfields, -fno-shrink-wrap, -fno-tree-switch-conversion]

Diagnostics:
  Suppress: ['drv_unknown_argument', 'unused-includes', 'pp_file_not_found']
  • 注:此文件将在全局生效。

clangd 禁用所有编译参数报错-20240730022550095.webp

可以看到,0 报错,非常之清爽,并且,代码提示补全功能和基础的语法检测全都正常使用。

Comment