eclipse-2026导入cdt lsp插件实现语法服务
参考文档 Eclipse CDT LSP - LSP based C/C++ Editor
1.下载eclipse
- 打开eclipse download packages
- 找到Eclipse IDE for C/C++ Developers,根据需要点击对应的平台
- 找到对应的镜像进行下载
例如此处我就使用了南京大学的镜像进行下载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
选择你想要的的workspace打开eclipse
点击Help -> Install New Software
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勾选全部组件,点击Next,然后继续点击Next,再同意Licenses,点击Finish
等待安装完成,然后点击Restart Now
验证是否安装成功
重启后打开Eclipse,点击Help->About Eclipse IDE菜单
在About界面点击Installation Details,在Installed Software标签页输入lsp,如果出现如下几个组件,说明安装成功设置默认编辑器
点击Window->Preferences,找到C/C++ -> Editor(LSP) -> clangd
勾选Set C/C++ Editor(LSP) as default配置打开clangd的log
3.使用cdt-lsp插件
- 创建cmake project
点击File->New->C/C++ Project - build project
在hellocmake工程上点击右键Build Project,看到如下输出,说明编译成功 - 使用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然后再格式化代码,可以发现生效了
