eclipse-2026导入cdt lsp插件实现语法服务
参考文档 Eclipse CDT LSP - LSP based C/C Editor1.下载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.zip2.安装clangd-lsp插件参考文档 Eclipse CDT LSP - LSP based C/C Editor#Try it out选择你想要的的workspace打开eclipse点击Help - Install New SoftwareAdd Repository在打开的Install界面点击Add…按钮在Add Repository输入如下Name: Eclipse CDT LSP - LSP based C/C EditorLocation: 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的log3.使用cdt-lsp插件创建cmake project点击File-New-C/C Projectbuild 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.hbuild project再重新打开编辑器即可如果编译后还是出现爆红那就运行一下hellocmake3. .clang-format文件不生效用eclipse创建的项目默认的.clang-format文件格式如下# Well use defaults from the LLVM style, but with some modifications so that its close to the CDT KR 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然后再格式化代码可以发现生效了