
1.安装1.安装clangd下载llvm llvm-project/releases安装到操作系统默认安装路径为C:\Program Files\LLVM\bin\并配置环境变量将C:\Program Files\LLVM\bin\添加到path环境变量中测试C:\where clangd C:\Program Files\LLVM\bin\clangd.exe C:\clangd--versionclangd version15.0.1 Features: windows Platform: x86_64-pc-windows-msvc2.vscode中安装clangd插件Name: clangdId: llvm-vs-code-extensions.vscode-clangdDescription: C/C completion, navigation, and insightsVersion: 0.6.0Publisher: LLVMVS Marketplace Link: https://marketplace.visualstudio.com/items?itemNamellvm-vs-code-extensions.vscode-clangd2.配置指定clangd查询路径的两种方法参考文档Clang 24.0.0git documentation2.1 在settings.json中指定在settings.json中指定compile-commands-dir和query-driver1.settings.json{C_Cpp.intelliSenseEngine:disabledclangd.arguments:[--compile-commands-dirbuild/mingw,--query-driverC:/msys64/ucrt64/bin/g.exe],}2..clangdCompileFlags: Add: - -stdc23 # - -IC:/install/my_sort_static_lib/include Index: # 启用后台索引以便提供跨文件跳转和补全。 Background: Build其中-stdc23表示使用的c版本为c23-I是添加附加的头文件搜索路径相当于gcc的-I参数-I的内容是从build\mingw\compile_commands.json获取到的build\mingw\compile_commands.json里面包含了includes_CXX.rsp对应着一个文件includes_CXX.rsp的文件内容就是-I参数把includes_CXX.rsp的里面的头文件搜索路径复制下来放到.clangd的Add里面即可2.2 在.clangd中指定toolchain1..clangd在项目根目录下创建.clangd文件CompileFlags: CompilationDatabase: build/mingw/compile_commands.json Add: - -stdc23 - --targetx86_64-w64-mingw32 # - --gcc-toolchainC:/msys64/ucrt64 # - -IC:/install/my_sort_static_lib/include # Compiler: C:/msys64/ucrt64/bin/g.exe Index: # 启用后台索引以便提供跨文件跳转和补全。 Background: Build–target的内容是g -dumpmachine输出的x86_64-w64-mingw32是 clang/LLVM 的“target triple”也就是一种标准化的平台标识字符串不是随便自己编的也不是某个文件里手动写出来的。它的格式是架构-厂商-操作系统-运行环境/ABI若未正确配置 --targetclangd 可能无法解析标准库如 stdio.h 或 导致跳转失败或补全错误。配置了–target之后就可以不再配置compiler和–gcc-toolchainAdd后面添加附加的头文件搜索路径相当于gcc的-I参数-I的内容是从build\mingw\compile_commands.json获取到的build\mingw\compile_commands.json里面包含了includes_CXX.rsp对应着一个文件includes_CXX.rsp的文件内容就是-I参数把includes_CXX.rsp的里面的头文件搜索路径复制下来放到.clangd的Add里面即可2..vscode\settings.json禁用cpp工程默认的intelliSenseEngine{C_Cpp.intelliSenseEngine:disabled}3.重启language serverctrlshiftp执行clangd: restart language server即可如果还不行那么ctrlshiftp执行Developer: Reload window即可