eclipse-2026导入cdt lsp插件实现语法服务

参考文档 Eclipse CDT LSP - LSP based C/C++ Editor

1.下载eclipse

  1. 打开eclipse download packages
  2. 找到Eclipse IDE for C/C++ Developers,根据需要点击对应的平台
  3. 找到对应的镜像进行下载


    例如此处我就使用了南京大学的镜像进行下载China - eScience Center, Nanjing University

    具体下载地址为
    https://mirrors.nju.edu.cn/eclipse//technology/epp/downloads/release/2026-06/R/eclipse-cpp-2026-06-R-win32-x86_64.zip

2.安装clangd-lsp插件

参考文档 Eclipse CDT LSP - LSP based C/C++ Editor#Try it out

  1. 选择你想要的的workspace打开eclipse

  2. 点击Help -> Install New Software

  3. Add Repository
    在打开的Install界面点击Add…按钮
    在Add Repository输入如下
    Name: Eclipse CDT LSP - LSP based C/C++ Editor
    Location: https://download.eclipse.org/tools/cdt/releases/cdt-lsp-latest
    点击Add

  4. 勾选全部组件,点击Next,然后继续点击Next,再同意Licenses,点击Finish

  5. 等待安装完成,然后点击Restart Now

  6. 验证是否安装成功
    重启后打开Eclipse,点击Help->About Eclipse IDE菜单
    在About界面点击Installation Details,在Installed Software标签页输入lsp,如果出现如下几个组件,说明安装成功

  7. 设置默认编辑器
    点击Window->Preferences,找到C/C++ -> Editor(LSP) -> clangd
    勾选Set C/C++ Editor(LSP) as default

  8. 配置打开clangd的log

3.使用cdt-lsp插件

  1. 创建cmake project
    点击File->New->C/C++ Project

  2. build project
    在hellocmake工程上点击右键Build Project,看到如下输出,说明编译成功
  3. 使用C/C++ Editor(LSP)编辑器打开hellocmake.cpp
    鼠标hover到std::cout上面,如果出现如下代码提示,说明clangd插件安装成功,这段代码提示就是来自于clangd.exe

问题解决

1.缺失构建工具ninja

如果在创建的cmake project上点击build project,但是编译失败CMake Error: CMake was unable to find a build program corresponding to “Ninja”. CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.


说明ninja这个构建工具没有放到环境变量中
下载ninja,并将ninja.exe放到环境变量目录中,我把它放到了mingw/bin目录下
ninja releases
再次编译就可以看到编译成功了

2. 没有识别到config.h

打开编辑器如果config.h爆红,说明还没有编译。clangd还没有识别到config.h
build project再重新打开编辑器即可
如果编译后还是出现爆红,那就运行一下hellocmake

3. .clang-format文件不生效

用eclipse创建的项目默认的.clang-format文件格式如下

# We'll use defaults from the LLVM style, but with some modifications so that it's close to the CDT K&R style. BasedOnStyle: LLVM UseTab: Always IndentWidth: 4 TabWidth: 4 PackConstructorInitializers: NextLineOnly BreakConstructorInitializers: AfterColon IndentAccessModifiers: false AccessModifierOffset: -4

然后我修改IndentWidth和TabWidth为8,再格式化代码,发现TabWidth不是8,我的修改没有生效。
原因不是 IndentWidth: 8 无效,而是 .clang-format 里这一行当前 clang-format 15.0.1 不认识

PackConstructorInitializers: NextLineOnly

改成 clang-format 15 支持的:

PackConstructorInitializers: NextLine

然后再格式化代码,可以发现生效了