整理:Visual Studio Code (vscode) 配置C、C++环境/编写运行C、C++(主要Windows、简要Linux)

如今是2019.6.8,因为这阵一直在忙,今天我用最新的VSCode() 和最新的Cpp插件(version 0.23.1)按照本文的安装步骤从零开始试了一下,因为vscode版本和cpp插件版本更新确实变化了不少,我近期会更新这篇文章,你们能够参考本文原来写的部分和https://code.visualstudio.com/docs/cpp/config-mingw ,进行配置。python

弄了半天,总算弄好了,结合网上的教程,整理分享一下~ios

发现总有童鞋问相同的问题,开始我还觉得是没有配置好,今天我本身按照我原来写的尝试了如下,确实出现了问题,多是VScode或者cpp的插件版本问题,2018.12.29更新,我会用绿色的字体表示。c++

另外要是本文的更新内容仍然不能解决您的问题,能够看看这篇文章,这篇文章是以后写的,比这篇有条理些,配置过程也简单些。要是始终有问题,欢迎留言,我会抽时间尽我所能解答(非大神有好多解答不了。。。) json

整体流程:windows

  1. 下载安装vscode
  2. 安装cpptools插件
  3. 安装编译、调试环境
  4. 配置系统环境变量path
  5. 修改vscode调试配置文件
  6. 其余
  7. Linux版本配置(简要)

一、下载安装vscode

https://code.visualstudio.com/Download 
 编辑器

二、安装cpptools插件 

打开vscode,按ctrl+p打开快速命令框,输入如下命令后等待测试

ext install cpptools字体

vscode在短暂的联网查找后会列出插件列表,如图: spa

image

这里写图片描述 
 

点击箭头所指处的按钮安装插件,安装过程可能会有些慢耐心等待 
安装完成后vscode会提示你重启vscode,此时重启便可.net

更新:由于我装这个插件已是几年以前了,不肯定如今界面仍是不是这样,可是意思不变,装完后点从新加载就好了

三、安装编译、调试环境

(如果电脑上原来装着codeblocks,Dev C++等能够跳过这步,

直接跳到  【四、配置系统环境变量path】 这步便可

目前windows下调试仅支持 Cygwin 和 MinGW。 
这里使用的是MinGW. 
下面是MinGW的安装配置过程: 
http://mingw.org/ 
进入官网点击右侧 Download Installer下载安装器 
打开安装器点击install准备安装: 
这里写图片描述

选择一个安装目录,默认为C:\MinGW这里选择的是A:\MinGW 
点击Continue开始安装,安装过程需联网,若安装时提示error则需翻墙安装 
安装过程很快,结束后Continue按钮恢复为可用状态,点击完成安装。

这里写图片描述 
打开MinGW安装管理器进行进一步配置

这里写图片描述

注意这里gdb必选,不然没法调试 
这里写图片描述

选中几个须要的项右键Make for Installation进行标记,其中gcc和g++为c和c++编译器 
选择彻底部想要安装的项后点击左上角Installation菜单下的Apply Changes应用修改,过程需联网,中间出现error可先继续,若最后失败则需翻墙更新,建议翻墙。

更新:单独装MinGW ,我最先是这么搞的,要是发现不能够(没法下载或者很怀疑本身MinGW没安装好等),能够试试codeblocks或者Dev-cpp等等,这些IDE自带编译器,仍是看这篇文章 里面有使用codeblocks自带的MinGW的细节,固然要是能够就继续。

四、配置系统环境变量path

而后配置系统环境变量path,这一步为必须 
在 个人电脑 上右键 属性: 
而后按照下面步骤作便可,注意最后新建的项要与以前MinGW安装位置相对应 

Windows7注意,要加入,不是覆盖!我第一次不当心把原来路径覆盖了。。。(由于win7不像win10那么明显是加入。。)
这里写图片描述

再次打开vscode,注意配置系统环境变量path后重启一下vscode 
注意vscode调试须要在打开的文件夹中进行(注意!是用VSC打开文件夹!!,单独打开一个单独的cpp是没有下面的几个配置文件出现的!!也就是说,这个cpp要在一个文件夹里!不像DevCpp和C-Free能够直接调试一个单独的cpp!!)

五、修改vscode调试配置文件

打开文件夹后,新建test.cpp(随便建,或者main.cpp)进行输入代码测试: 
这里写图片描述

如图示进入调试界面选择C++: 
这里写图片描述 
这里写图片描述

而后会在工做目录下的生成一个launch.json的启动配置文件: 
这里写图片描述

使用下面代码替换该文件:(只是在vsc本身产生的json文件加了一些行)

launch.json中有不少属性能够设置, 经过智能提示查看有那些属性能够设置, 若是要查看属性的具体含义, 能够把鼠标悬停在属性上面, 会属性的使用说明.

{  
    "version": "0.2.0",  
    "configurations": [  
        {  
            "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示  
            "type": "cppdbg",       // 配置类型,这里只能为cppdbg  
            "request": "launch",    // 请求配置类型,能够为launch(启动)或attach(附加)  
            "program": "${workspaceRoot}/${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径  
            "args": [],             // 程序调试时传递给程序的命令行参数,通常设为空便可  
            "stopAtEntry": false,   // 设为true时程序将暂停在程序入口处,通常设置为false  
            "cwd": "${workspaceRoot}", // 调试程序时的工做目录,通常为${workspaceRoot}即代码所在目录  
            "environment": [],  
            "externalConsole": true, // 调试时是否显示控制台窗口,通常设置为true显示控制台  
            "MIMode": "gdb",  
            "miDebuggerPath": "C:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin\\gdb32.exe", // miDebugger的路径,注意这里要与MinGw的路径对应  
            "preLaunchTask": "g++", // 调试会话开始前执行的任务,通常为编译程序,c++为g++, c为gcc  
            "setupCommands": [  
                {   
		    "description": "Enable pretty-printing for gdb",  
                    "text": "-enable-pretty-printing",  
                    "ignoreFailures": true  
                }  
            ]  
        }  
    ]  
}

注意miDebuggerPath要与MinGw的路径对应 ,我用的codeblocks的gdb,见上面的json文件。

注意miDebuggerPath是\\,与直接粘贴过来的路径不同,须要加一个”\”(冒号后面的两个反斜杠“\\”),或者使用一个“/”

替换后保存,而后切换至test.cpp,按F5进行调试,此时会弹出一个信息框要求你配置任务运行程序,点击它~ 
这里写图片描述

【注意】,上面的那个目前的cpp插件彷佛没有了,如果直接按F5会出现下面这个图,不清楚评论区童鞋说的是否是这个?

请点击第二个“配置任务”,而后出现这个:点就好了~

以后出现:

在这里随便选一个:(我选的others)【随便选,反正最后tasks.json文件要被覆盖】【下面的图是更新以前的图】

这里写图片描述

而后用下面代码替换:【更新:原来的"version": "0.2.0"彷佛会有下划线报错,那就按照vscode说的改成2.0.0好了,下面的是最新的复制便可。】

{
    "version": "2.0.0",
    "command": "g++",
    "args": ["-g","${file}","-o","${fileBasenameNoExtension}.exe"],    // 编译命令参数
    "problemMatcher": {
        "owner": "cpp",
        "fileLocation": ["relative", "${workspaceRoot}"],
        "pattern": {
            "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
            "file": 1,
            "line": 2,
            "column": 3,
            "severity": 4,
            "message": 5
        }
    }
}

保存一下,而后切换至test.cpp,再次按F5启动调试~

这里写图片描述

【更新:彷佛下面的步骤配置c_cpp_properties.json不须要了,由于我按照上面的步骤来彷佛没有在头文件有下划线和原来有的灯泡图标什么的,因此下面的开始到 “六、其余” 以前能够不用看,到这里基本配置完成】

配置c_cpp_properties.json

  • 保存一下,而后切换至a.cpp,再次按F5启动调试。
  • 若是前面的配置都对的话,这个时候会进行编译,而后跳出黑框输出Hello World,以后窗口又迅速消失。
  • 可能大多数人已经习惯了VS/VC的便利,其实咱们这只要在末尾加上一个cin输入便可。加上int pause;cin>>pause;后再按F5。
  • 可是这个貌似不够高大上,其实咱们通常是使用system('pause');实现,换上后再次运行,这时候报错了。由于咱们咱们引用的库有问题,没有正确引用进来,注意这里不是VS/VC,须要咱们本身配置路径。
  • 注意:以前在下载安装GNU哪里已经配置了相应的环境变量,可是VScode中有个配置文件,他是根据本身的配置文件来找的。
  • 在编辑器中,有小波浪的就是代码有问题,看下#include<iostream>,左边有个灯泡,点击后跳出配置文件,修改其中的Win32的"includePath"以下,和上文同样,根据本身的路径进行调整便可。经测试,下图中代码的注册部分还是必要部分
{ "name": "Win32", "includePath": [ "C:/Program Files/MinGW/include/*", "C:/Program Files/MinGW/lib/gcc/mingw32/5.3.0/include/*" "C:/MinGW/lib/gcc/mingw32/5.3.0/include/c++/*", "C:/MinGW/lib/gcc/mingw32/5.3.0/include/c++/mingw32/*", "C:/MinGW/lib/gcc/mingw32/5.3.0/include/c++/backward/*" ], "browse": { "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" } }

 

image

六、其余

一劳永逸:由于VS须要为每个文件夹作单独配置,因此建议把.vscode文件夹放到你经常使用的文件夹的顶层,这样就不用重复配置了。
不用每一个新cpp文件就要一套配置。这些配置在你配置好的文件夹内的全部子文件夹和文件都能使用。

 

最后效果: 
设置断点,变量监视,调用堆栈的查看: 
设置断点,变量监视,调用堆栈的查看

条件断点的使用: 
条件断点的使用

新更新:【红色的是很早很早前更新的,2018.12.29更新,会用绿色的字体表示】

最后补一句:

vscode彷佛还仅仅支持英文文件名的调试,中文调试的话就会出现“找不到文件XXXXX.cpp”(大意,原文记不清了,由于距离这个问题我已经解决很长时间了,今天看到想补一下,别让新人踩坑了。。。),而后问是否要建立,不知道是BUG仍是啥,这纠结了我N久,由于我有些cpp文件是中文命名的,我去Github上找相应的issue也没有找到我想要的这个问题解答,最后偶然间发现英文命名的文件调试时不会出现这个问题,才解决了!!真的很坑!!!新人注意!!!这里浪费了我很长很长时间!!

【要是根据上述方法尚未配置成功,请看评论区是否有人提出了相似问题,还能够按照我在这篇文章以后一段时间写的一篇:这篇文章,那篇文章使用了codeblocks自带的MINGW,并且配置方法比这个简单一些(由于这个是最先写的),要是始终有问题,欢迎留言,我会抽时间尽我所能解答(非大神有好多解答不了。。。) 】

 

Linux版本配置(简要)

也是很早以前配置过Linux的,今天我偶然发现了有之前用Linux配置的文件,感受步骤都和windows配置很少(彷佛没有miDebuggerPath这一项),直接上文件了:

【注意:不肯定这个还能不能用,由于是很早以前的了,仅仅作参考】

launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",	// 配置名称,将会在启动配置的下拉菜单中显示
            "type": "cppdbg", 		// 配置类型,这里只能为cppdbg
            "request": "launch",	// 请求配置类型,能够为launch(启动)或attach(附加)
            "program": "${workspaceRoot}/${fileBasenameNoExtension}.o",// 将要进行调试的程序的路径
            "args": [],				// 程序调试时传递给程序的命令行参数,通常设为空便可
            "stopAtEntry": false, 	// 设为true时程序将暂停在程序入口处,通常设置为false
            "cwd": "${workspaceRoot}",// 调试程序时的工做目录,通常为${workspaceRoot}即代码所在目录
            "environment": [],
            "externalConsole": true,// 调试时是否显示控制台窗口,通常设置为true显示控制台
            "MIMode": "gdb",
            "preLaunchTask": "g++",	// 调试会话开始前执行的任务,通常为编译程序,c++为g++, c为gcc
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

tasks.json:

{
    "version": "0.1.0",
    "command": "g++",
    "args": ["-g","${file}","-o","${fileBasenameNoExtension}.o"], // 编译命令参数
    "problemMatcher": {
        "owner": "cpp",
        "fileLocation": ["relative", "${workspaceRoot}"],
        "pattern": {
            "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
            "file": 1,
            "line": 2,
            "column": 3,
            "severity": 4,
            "message": 5
        }
    }
}