Windows+MinGW-w64+lsp-clangd+VSCode/sublime 配置简单c/cpp 单文件学习环境简要记录

有些时候我只想快速打开或者编写运行一个简单的c/cpp文件来快速验证想法, 比如说在做LeetCode上面的算法题时, 往往只需一个简单的单文件就可以写完所有逻辑.

我希望可以在编辑器里写代码时提供语法高亮, 智能提示, 错误检测和修改建议等功能, 同时还可以很方便地编译运行查看结果. 当前几乎所有的IDE都提供这些功能, 但是无论有多少个cpp文件, 里面的代码有多简单, 他们都要求新建一个工程项目来放置cpp文件, 对于我前面提到的场景有点"杀鸡焉用牛刀了".

后来我发现了LSPclangd, 提供IDE的基本编码功能且轻量快速, 也支持单文件, 很符合我的需求. 安装clangd插件很简单不做介绍, 这里主要讲一下目前clangd在Windows上的一些问题: 目前clangd在Windows上只能自动识别MSVC的头文件, 但是如果没有安装MSVC而是用MinGW的GCC的话, 会报'vector file not found'等找不到头文件的错误.
同样在Sublime Text上也会有类似的提示
上述问题通过Visual Studio Installer 安装MSVC就可以解决. 但是如果嫌msvc太大而只想用mingw呢? VSCode的clangd插件的GitHub仓库里正好有人提到了相关的issue: https://github.com/clangd/vscode-clangd/issues/478 . 根据issue里提到的方案, 只要加上--target x86_64-w64-windows-gnu 这个flag就可以了
下面分别记录了VSCode和Sublime Text如何添加这个flag来解决在clangd在mingw下找不到头文件的问题以及分别通过其他插件快速编译运行cpp单文件

1. vscode + clangd + Code Runner

  1. 在设置里搜索@ext:llvm-vs-code-extensions.vscode-clangd
  2. 在Fallback Flags里添加两个item, 一个是--target, 一个是x86_64-w64-windows-gnu, 如下图
这时重开VSCode就会发现clangd可以找到mingw的头文件了
然后再安装 Code Runner 插件就可以通过右键->Run Code来直接运行cpp单文件了

2. sublime text+ LSP-clangd + FastOlympicCoding

  1. 以此通过上方菜单栏的Preferences->Package Settings->LSP->Servers->LSP-cland打开cland的配置文件
  2. 将initializationOptions这一个字段的内容复制到自定义配置里并且修改fallbackFlags 这一个字段:
    "fallbackFlags": ["-target", "x86_64-w64-windows-gnu"],
    如图所示:
这时重开Sublime Text就会发现clangd可以找到mingw的头文件了
然后再安装 FastOlympicCoding 插件就可以通过ctrl+alt+b来直接运行cpp单文件了

同时记得要在FastOlympicCoding 配置文件里设置lint_enabledcpp_complete_enabledfalse, 不然可能会与clangd插件冲突

3.不足

最大的不足就是没有debug功能, 要看某些变量在运行过程的变化只能通过类似printf来输出. 要是遇到了需要debug的情况, 还是推荐使用IDE来新建项目.另外VSCode的官方cpp插件是带有简单的调试功能的, 但是性能会比clangd差很多, 各有取舍吧.