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文件格式如下

properties 复制代码
# 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

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