从0开始配置Win环境下VScode (VScode For C/C++)

Windows环境下的VScode For C++

写在开篇:以前用的编译器是DEV-CPP跟VS2019,这两者我很长一段时间是配合使用,因为用起来感觉各有优点。dev-c++主要是简洁,而且开启速度快,在日常中写一些小的代码完全够用。缺点就是不利于多文件编写与debug。而VS2019是功能很全面的IDE,集编辑器,编译器,调试器于一体的宇宙最强IDE(doge),用来写一些大的项目自然是用起来得心应手,不过对于那些电脑配置不是太好的小伙伴们来说,建一个项目所等待的时间就较长了,等待的体验感极差!!!所以我都是集两者优点去使用。(也是没有办法 - _-|)
在接触了vscode之后才意识到是时候上手了hhh,他的功能极其强大,VS2019有的功能都可以在vscode上通过一些插件配置好,且本身体积小,70-80MB,因为它本质上是一个类似于sublime text的编辑器~~~,话不多说了,下面开始C++环境的配置
----

1. 配置编译器:

windows下一般使用mingw或者cygwin编译器,里面都集成了gcc(应该是这样的,具体可以自行查阅看看看看看~~)
这里我推荐下载MinGW编译器!!!

1.1 下载MinGW:

你可以去官网进行下载最新版本-------不过不是很推荐,因为下载较慢,dddd~~
点我跳转到MinGW官网!!
这里贴一个SourceForge里的下载链接:
点我跳转到SourceForge的mingw仓库!!

你会看到这样一个界面—>
在这里插入图片描述
不要着急点download latest version,在页面中找到如下信息---->
在这里插入图片描述
然后寻找当时的最新版本,我现在看到的最新版本是gcc-8.1.0,所以我选择它,找到x86_64-posix-seh点击下载!!(x86-64是64位版本的意思~~~)
在这里插入图片描述
其实,我这里有mingw8.1.0的安装包,嘿嘿,不知道你是安好了才看到还是啥hhh

链接:点我跳转到百度网盘下载mingw安装包
提取码:sao5

这里直接doge保命!!

1.2 配置环境变量:

下载完成后进行安装,建议自己一定要记住安装的路径,不要随便就安装到某个文件夹里,导致后续操作找不到安装路径!!!
安装完成后需要进行环境变量的配置:在你的win10电脑(默认了)中(应该没有win7的~~)按下win键,也就是左Ctrl右边的那个键,带windows图标的- - -接下来输入查看高级系统设置,按enter键进入。ps:当然其他方法找到高级系统设置也很好,找到了就行哈~~
在这里插入图片描述
你会看到如下界面:
在这里插入图片描述
点击环境变量进入:
在这里插入图片描述
按照我图片中给的指示操作:在系统变量中找到Path,然后双击它!!
在这里插入图片描述
进入到编辑环境变量界面,依旧是按照指示操作,图片比文字来的明了- - -
在这里插入图片描述

1.3 怎么找到bin路径?

找到mingw的安装目录,点进去,可以看到如下界面:
在这里插入图片描述
进入bin,然后复制此路径:还不会的建议/remake ^_^
在这里插入图片描述
将你复制到的bin路径粘贴在Path栏中,然后点击确定就ok了!!

1.4 检查是否安装好编译器:

同时按下Win+R,输入cmd,如下:
在这里插入图片描述
进入到cmd界面,输入gcc -v或者gcc --version查看版本号:如果看到一大堆你看不懂的东西和8.1.0这类版本信息,说明你安装成功了!!喜大普奔~~
在这里插入图片描述

2. VScode下载:

直接网址栏搜索vscode,找到官网进行下载,这里附上官网网址:
点我跳转到vscode官网!!
点击download for windows即可~~

当然,直接下载可能太慢了,得10min+或者更长时间,因为是外网,我这里有国内镜像:

还在因为vscode官方下载慢而头疼嘛,按这个步骤来直接起飞兄弟萌
首先进入vscode官方然后选择对应版本下载
然后进入浏览器下载页面
复制下载链接粘贴到地址栏
将地址中的/stable前换成https://vscode.cdn.azure.cn
即可实现超速下载
下面是一个国内镜像的下载链接

https://vscode.cdn.azure.cn/stable/b4c1bd0a9b03c749ea011b06c6d2676c8091a70c/VSCodeUserSetup-x64-1.57.0.exe

安装完成后就是配置C/C++环境了~~

3. 配置.json文件:

在代码的头文件夹里要有一个文件夹名字为 .vscode 里面包含三个文件
1.tasks.json(必须)
2.launch.json(必须)
3.settings.json(非必须)
4.c_cpp_properties.json(非必须)
其中 1 和 2 可自动生成
按F5调试,点击第一个,自动生成launch.json

配置四个.json文件
先创建一个你打算存放代码的文件夹(称作工作区),路径不能含有中文和空格和引号。c语言和c++需要建立不同的工作区(除非你懂得下面json文件的某些选项,则可以做到一个工作区使用不同的build task)。

打开VS Code,选打开文件夹(不要选“添加工作区文件夹”,理由见上一句),选择刚才那个文件夹,点VS Code上的新建文件夹,名称为.vscode(这样做的原因是Windows的Explorer不允许创建的文件夹第一个字符是点),然后创建 launch.json,tasks.json,settings.json,c_cpp_properties.json放到.vscode文件夹下,效果图:
在这里插入图片描述
其中launch.json与tasks.json可以自动生成,先编写一个简单的cpp代码,然后点击F5调试,此时就会弹出一个提示,如下:
在这里插入图片描述
点击C++(GDB/LLDB),此时又会弹出如下提示:
在这里插入图片描述
点击g++.exe -生成和调试活动文件,选择你刚刚下载的mingw,我这里有几个编译器所以选项很多,估计你那就一个mingw,选g++.exe就好了~~

此时launch.json与tasks.json已经默认配置好,也就是你的代码可以run了,我写了一个hello.cpp,如下:
在这里插入图片描述
到这里其实已经算配置完成了,但如果就这,那大伙也不禁喷一句就这??我们不用默认的.json文件,我们自己配置!!

3.1 launch.json代码:

//自己配置的launch.json文件
// https://github.com/Microsoft/vscode-cpptools/blob/master/launch.md
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
            "type": "cppdbg", // 配置类型,cppdbg对应cpptools提供的调试功能;可以认为此处只能是cppdbg
            "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
            "program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
            "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
            "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
            "cwd": "${workspaceFolder}", // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
            "environment": [], // 环境变量
            "externalConsole": true, // 为true时使用单独的cmd窗口,与其它IDE一致;18年10月后设为false可调用VSC内置终端
            "internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧
            "MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但我没试过lldb
            "miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe", // 调试器路径,Windows下后缀不能省略,Linux下则不要
            "setupCommands": [
                { // 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "Compile" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
        }
    ]
}

3.2 tasks.json代码:

//自己配置的tasks.json文件
// https://code.visualstudio.com/docs/editor/tasks
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Compile", // 任务名称,与launch.json的preLaunchTask相对应
            "command": "g++", // 要使用的编译器,C++用g++
            "args": [
                "${file}",
                "-o", // 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out
                "${fileDirname}/${fileBasenameNoExtension}.exe",
                "-g", // 生成和调试有关的信息
                "-Wall", // 开启额外警告
                "-static-libgcc", // 静态链接libgcc,一般都会加上
                "-fexec-charset=utf-8", // 生成的程序使用GBK编码,不加这一条会导致Win下输出中文乱码
                "-std=c++11", // C++最新标准为c++17,或根据自己的需要进行修改
            ], // 编译的命令,其实相当于VSC帮你在终端中输了这些东西
            "type": "process", // process是vsc把预定义变量和转义解析后直接全部传给command;shell相当于先打开shell再输入命令,所以args还会经过shell再解析一遍
            "group": {
                "kind": "build",
                "isDefault": true // 不为true时ctrl shift B就要手动选择了
            },
            "presentation": {
                "echo": true,
                "reveal": "always", // 执行任务时是否跳转到终端面板,可以为always,silent,never。具体参见VSC的文档
                "focus": false, // 设为true后可以使执行task时焦点聚集在终端,但对编译C/C++来说,设为true没有意义
                "panel": "shared" // 不同的文件的编译信息共享一个终端面板
            },
            "problemMatcher": "$gcc" // 此选项可以捕捉编译时终端里的报错信息;但因为有Lint,再开这个可能有双重报错
        }
    ]
}

3.3 settings.json代码:

// {
//     "files.associations": {
//         "vector": "cpp",
//         "string": "cpp",
//         "iostream": "cpp"
//     }
// }
{
    "files.associations": {
        "typeinfo": "cpp",
        "ostream": "cpp",
        "iostream": "cpp",
        "array": "cpp",
        "*.tcc": "cpp",
        "cctype": "cpp",
        "clocale": "cpp",
        "cstdarg": "cpp",
        "cstdint": "cpp",
        "cstdio": "cpp",
        "cstdlib": "cpp",
        "cwchar": "cpp",
        "cwctype": "cpp",
        "unordered_map": "cpp",
        "vector": "cpp",
        "exception": "cpp",
        "fstream": "cpp",
        "functional": "cpp",
        "initializer_list": "cpp",
        "iosfwd": "cpp",
        "istream": "cpp",
        "limits": "cpp",
        "new": "cpp",
        "sstream": "cpp",
        "stdexcept": "cpp",
        "streambuf": "cpp",
        "tuple": "cpp",
        "type_traits": "cpp",
        "utility": "cpp",
        "deque": "cpp",
        "queue": "cpp",
        "atomic": "cpp",
        "cmath": "cpp",
        "cstddef": "cpp",
        "algorithm": "cpp",
        "map": "cpp",
        "memory": "cpp",
        "memory_resource": "cpp",
        "optional": "cpp",
        "string": "cpp",
        "string_view": "cpp",
        "system_error": "cpp"
    }
}

3.4 c_cpp_properties.json代码:

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "D:\\mingw64\\bin\\g++.exe",
            "cStandard": "c11",
            "cppStandard": "c++11",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

到这里VScode的C/C++环境已经基本配置完成,如果觉得不够好可以自行改进,如果有错误可以issue!!

3.5 一些问题的解决方法:

1.找不到任务"g++.exe build active file"

在这里插入图片描述
错误原因:launch.json中的 “preLaunchTask” 和 tasks.json的 “label” 后面的内容要相同,具体原因自行百度,俺也不懂~~
像这样:
launch.json:
在这里插入图片描述
tasks.json:
在这里插入图片描述二者名称相同就行,是什么名称无所谓~~

2.Unable to start debugging.Unexpected GDB output from command:

在这里插入图片描述
原因:编译环境(MinGW)不支持中文路径,将路径中的中文更改即可。还有记得文件夹的命名文件的命名中也不能有中文,不然也会报错!!

写在最后:

总的来说,俺已经很用心去写了,查阅了各种资料,总结了大佬们的经验,当然我自己也失败了很多次,原因都是配置的不够好(不能输出中文啥的)。欢迎大伙提出建议!!有错误请直接issue~~
把自己的经验写出来果然感觉不一样了,理解也能更深刻,确实是这样hh~~

see you next blog~~

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁海没有七号公园

谢谢你%%%

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值