如何让 clangd 使用诊断标志?

How to make clangd use diagnostics flags?

我正在尝试使用 Neovim 内置的 LSP 配置设置 clangd,它工作正常。问题是,通常我用标志 -Wall -Wextra -Werror 编译所有东西,如何让 clangd 在分析代码和提示错误时使用这些标志?

提前致谢:)

clangd 自动从名为 compile_commands.json 的文件中读取编译数据库,并从那里重新使用编译器标志。无需在 Neovim 中做任何特别的事情。例如,compile_commands.json 文件可能如下所示:

[{
  "directory": ".",
  "file": "test.cpp",
  "arguments": ["g++", "-c", "test.cpp", "-Wall", "-Wextra", "-Werror"]
}]

通常您会希望在构建过程中生成此文件。 CMake 可以开箱即用,或者您可以使用 clang -MJ compile_commands.json.

clangd 通过 $XDG_CONFIG_HOME/clangd/config.yaml 接受全局配置。您可以添加编译标志:

CompileFlags:
    Add: [-Wall, -Wextra, -Werror]