windows平台:vscode+mingw+clangd配置

记录一次痛苦的环境配置。

说来简单,我的初心就是让vscode有更强大的代码分析、补全功能,然后找到clangd这个插件。clangd的优势我就不赘述了,总之比C/C++插件强太多了。

考虑到clangd只是一个前端工具,它本身是需要内部编译器的支持,而网上的绝大部分资料都是配置LLVM+clang+clangd。我本身电脑上就已经有msvc和mingw两套编译器了。就希望只是简单的使用clangd的静态分析功能。所以我的诉求就是,尽可能少的变动自己已有的环境,再补上更强大的代码分析工具。

总结步骤如下:

1. 安装MinGW,这是实际使用的编译器,过程不赘述,网上资料很多;

2. 安装插件:C/C++、clangd。二者会冲突,但是不要紧,先忽略冲突(第4步做完了再点disable);顺手下载language server。一般会有弹窗提醒下载,要是没有就手动输入clangd:Download language server。

坑一:这个地方我试过手动下载然后选择路径,一直失败,建议使用在线下载。

3. 试着写上最简单的代码:

#include <iostream>

int main(int argc, char *argv[]) 
{
  std::cout << "hello~" << std::endl;
  return 0;
}

3. 把鼠标放在<iostream>上,观察出现的内容。

3.1 未报错,头文件指向路径为MSVC下的库,这种情况是电脑上已经安装了VS,它自动指向了该编译器。可以正常使用,也可以手动修改为指向MinGW编译链;

3.2 报红线,无法找到库文件。这时候需要手动添加上包含头文件的路径。

4. 针对问题3.2。修改C/C++插件下的包含路径:可以通过UI修改和json文件修改,此处我贴上了自己的头文件路径,如果是默认安装Mingw可以直接搬走,前提是环境变量也是一致的,不过网上基本上所有的教程教的环境变量配置都是一样的。(这一步的前提要注意不要将C++插件的Intelli Sense设置为disable),顺手可以把编译器版本和型号也一起填了。

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "C:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++",
                "C:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32",
                "C:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/backward",
                "C:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include",
                "C:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed",
                "C:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.17763.0",
            "compilerPath": "C:/Program Files/mingw64/bin/g++.exe",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}

5. 打开clangd的拓展设置,Arguments项是让用户自己配置静态分析的功能,需要什么就加什么,网上教程有很多说明。FallBack Flags 这里添加头文件,这里建议在UI里一行行的添加项,格式为

-IC:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++

坑一:这里一定是大写的 而不是小写的 ,有的博客打错了这个字母,有人直接粘贴到本地发现怎么都不对还找不到原因,就是因为这个原因。

坑二:有人直接在.vscode文件夹下的setting文件里面粘贴这些内容,但是不管用。要通过json文件来添加,必须打开正确的setting.json文件。左下角齿轮->配置文件(默认)->显示文件内容。必须在这里面添加才有用。

"clangd.fallbackFlags": [
        "-IC:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++",
        "-IC:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32"
    ],

6. 重启vscode回到代码界面,红线消失,鼠标再次指向<iostream>,此时已经指向了MinGW路径下的库。当然是没有原生的clang适配,但是对于像我一样简单的需求,只是为了更方便的跳转和查看定义而言,使用MinGW+clangd已经足够了。

理论上做完以上步骤就能使用clangd了。如果一直没有变化,还是指向MSVC的话。那就是电脑抽风了!!!这个问题花了我一天的时间研究,最后发现就是电脑抽风了!!!多重启几次,过一段时间就好了。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值