在VSCodium中,结合MinGW使用clangd插件的避坑方案
前因
想在Windows操作系统上开发C++项目,不想用体积大且不能单独安装的msvc,所有选择了MinGW。使用的编辑器是VSCodium,它不能使用微软开发的C/C++插件,只能使用clangd这个插件作为替代。
使用这个clangd这个插件,需要安装clangd这个程序。
用scoop分别安装clangd,MinGw。打开VSCodium编辑C++项目,主要有下面两个问题:
- 提示找不到头文件
- 报错:In included file: expected ‘;’ after top level declaratorclang(invalid_token_after_toplevel_declarator) stdio.h(184, 64): Error occurred here
解决
初次尝试
找不到头文件,就在clangd的配置文件中添加相关目录,配置文件位置是%LocalAppData%\clangd\config.yaml,没有就创建。如下所示:
1 | CompileFlags: |
配置文件参考官方文档:https://clangd.llvm.org/guides/system-headers#how-clangd-finds-those-headers。
完成后,编辑器上头文件找不到的问题解决了。然后就是第二个问题,这个问题只会在cpp文件出现。网上找了多种解决方法,不能解决问题。
简单解决
直到看到了这个https://gitee.com/scu319hy/edx/issues/I7SPGU#note_20505076_link,发现一种更加简单的方法。
不用分别安装MinGW和clangd,直接安装llvm-mingw,上面提到的问题都不会出现。
可以在GitHub仓库https://github.com/mstorsjo/llvm-mingw/下载,下载的是mingw-xxxx-llvm-ucrt-x86_64.zip这个,使用后没有出现前面两个问题。
其它问题极其解决
1、在.clangd文件中依据项目根目录配置头文件位置,对于不再根目录的源码clangd插件提示找不到头文件。
这个是因为clangd默认以打开文件所在目录为根目录,所以.clangd中配置的位置就相对错了,解决办法就是加一个空的compile_flags.txt文件到.clangd所在目录。
