VSCode上配置C++(Windows)
这些天想在windows下使用VSCode,简洁、轻量的VSCode好处就不再多说,但是我在VSCode上配置C++却遇到了很多问题,因为windows下不像是linux那么方便,可以轻松地安装g++编译器···于是在此记录全过程以及踩过的坑:
1.安装VSCode
首先去官网下载64位VSCode(stable),网址如下:https://code.visualstudio.com
安装的时候需要将其他选项的二、四选上,第二个选项是因为通常我们使用VSCode是打开一个文件夹(一个项目),如果不选上的话无法右键直接打开文件,较为麻烦。不过后面可以补救,具体步骤参考:https://www.jianshu.com/p/e8c29211fba9
其次安装一些必要的插件,直接搜索就可以。比如C/C++(必须安装)和Chinese Language(强烈推荐)
2. 安装MinGW
想要在VSCode上使用g++编译器,需要使用Cygwin和MinGW(当然如果本来就安装了CodeBlocks、Dev C++和Qt,可以直接使用其自带的编译器)
这里使用的是MinGW,网上常用的方式是在官网下载:https://osdn.net/projects/mingw/releases/68260
还需要进一步配置,具体步骤参考:https://blog.csdn.net/bat67/article/details/76095813。
由于我试了两次没有成功(下载网速慢和gcc查找不到的原因),于是这里不详细阐述上述方法,改用下述方法:
首先下载安装MinGW的可执行文件,不需要下载zip,更简单、快速。虽然安装过程仍需要一些时间,但相较于上面的方法简直不要太快。网址:https://sourceforge.net/projects/mingw-w64/files/,图解:
第一步和第二步没啥好说的,第三步需要把architecture中的i686改成x86_64。
然后把MinGW文件下的mingw64下的bin文件夹添加到环境变量中去,我的路径是:D:\MinGW\mingw64\bin,图解:
别忘了逐层点确定!!!不然是无法添加成功的。如果上述步骤成功的话:打开cmd,输入命令gcc -v,会输出gcc编译器的相关信息:
此时我们的编译器、库文件什么的已经安装成功(不会出现之前的报错),之后我们写个代码测试一下。
3.配置launch.json和task.json
点击小虫子,也就是图中圈出来的debug按钮,会弹出窗口,说需要我们构建launch.json和task.json,每次弹出的窗口中我们选择第一个就好,然后改这两份文件中的代码
launch代码如下:
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示 "type": "cppdbg", // 配置类型,这里只能为cppdbg "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加) "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径 "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可 "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false "cwd": "${workspaceFolder}", // 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录 "environment": [], "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台 "MIMode": "gdb", "miDebuggerPath": "D:\\MinGW\\mingw64\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应 "preLaunchTask": "g++", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
值得注意的是,miDebuggerPath中要改成自己的gdb.exe的路径。除此之外为了避免构建一个工程就要生成一遍launch和task,可以将俩文件单独放在一个文件夹,其他不同的工程文件放在不同的文件夹中,如图:
但是为了让每个可执行文件生成在每个工程文件夹里面(方便管理),将program选项修改成如上所示,同时还要修改的是task里面的args。前者是去找这个exe文件,后者是生成这个.exe文件。
task代码如下:
{
"version": "2.0.0",
"command": "g++",
"args": ["-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"], // 编译命令参数
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceFolder}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}