使用 Visual Studio Code 搭建 C/C++ 开发和调试环境
文章目录
1. 安装 C/C++ 插件
C/C++ 是由 Microsoft 发布的支持 C/C++ 智能提示和调试等功能的插件,安装步骤如下:
- 使用快捷键
Ctrl + Shift + X
呼出扩展面板 - 在搜索框中输入:C/C++
- 再安装由 Microsoft 提供的名为 C/C++ 插件。
2. 安装 MinGW-w64 并配置好环境变量
首先下载 MinGW-w64 点这里下载 MinGW-w64 。下载完成之后我们开始安装 MinGw-w64,安装路径可以自由定义,我这里安装路径为 D:\App\MinGW
。安装时需要设置的安装选项如下:
- Version :GCC 版本,直接选最高;
- Architecture :CPU 架构,系统如果为64位,则选择 x86_64;
- Threads :API 模式,使用默认选项;
- Exception :异常处理方式,seh 仅针对 64 位架构,sjlj 则兼容 32 位架构;
- Build revision :修订版本,使用默认选项;
安装过程中需要联网下载部分文件,由于网络问题安装失败的,可以 点这里下载 免安装版本。下载后直接解压在你想安装的文件夹。
然后我们要在安装路径中找到 bin 文件夹,通常在 ${MinGW-w64安装位置}\mingw64\bin
,以我的安装路径为例,bin 文件夹位于 D:\App\MinGW\mingw64\bin
。
接下来,我们将刚刚获取的 bin 文件夹的路径添加到系统环境变量。
- 按
Win + R
键,打开运行窗口,,输入sysdm.cpl
并回车; - 在弹出的
系统属性
窗口,选择高级
选项卡; - 在
高级
选项卡找到环境变量
按钮,单击环境变量
按钮,打开环境变量
窗口 ; - 在
环境变量
窗口的系统变量
区域找到Path
变量 ,双击Path
出现编辑环境变量
窗口; - 在
编辑环境变量
窗口点击新建
,在新建的这行输入我们刚刚获取的 bin 文件夹的路径,然后点确定。
3. 测试环境变量是否配置正确
在命令行输入 gcc --version,如果返回的是已安装的 gcc 的版本信息,那么环境变量就配置正确了。
下面是在我的电脑上输入 gcc --version 的结果,可以看到我安装的版本为:gcc 7.3.0
PS C:\Users\Jason> gcc --version
gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
4. 创建和设置 C 语言开发工作区
在你的计算机中选择一个合适的位置,作为你的 C 语言开发工作区。建议工作区所在路径仅由字母、数字、下划线组成,不要包含其他的符号。例如空格,空格符号常常作为命令行中命令和参数的间隔符,如果路径包含空格会导致编译时出错。我创建的工作区的路径为:D:\Study\C\WorkSpace
由于 Windows 中文版命令行输出字符是 GB2312 编码的,而 VS Code 工作区默认是 UTF-8 ,这会导致你编写的 C 代码编译后在命令行执行并查看结果时中文会显示乱码,所以我们要单独针对工作区进行设置字符编码,保证程序输出的字符也采用跟命令行一致的 GB2312 编码,步骤如下:
- 使用 VS Code 打开你创建的工作区;
- 在 VS Code 左下角的设置按钮进设置,再点击
用户设置
旁边的工作区设置
; - 在
工作区设置
中添加"files.encoding":"gb2312"
5. 编写你的第一个 C 语言程序
在工作区新建一个 C 语言源文件命名为 hello.c ,输入以下内容:
#include <stdio.h>
#include <windows.h>
int main()
{
printf("hello world!/n");
system("pause");
}
6. 配置导入的头文件参数 c_cpp_properties.json
在编写完毕并保存之后,你可能会看到 #include 这句下面会有绿色波浪线,这是由于编译器没办法找到你所使用的头文件的所在位置。将光标移动到该行,行号左边会出现 黄色小灯泡
,点击会出现一个提示按钮:Add include path to setting
,继续点击该提示,则会在工作区 .vscode
下生成 c_cpp_properties.json
文件。将文件修改成下面内容:
{
"configurations": [{
"name": "MinGW",
"intelliSenseMode": "gcc-x64",
"compilerPath": "D:/App/MinGW/mingw64/bin/x86_64-w64-mingw32-gcc.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"includePath": [
// 下面路径中的 D:/App/MinGw 部分需要替换成你的 MinGw-w64 安装路径
"${workspaceFolder}/**",
"D:/App/MinGW/mingw64/x86_64-w64-mingw32/include",
"D:/App/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++",
"D:/App/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/tr1"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE",
"__GNUC__=7",
"__cdecl=__attribute__((__cdecl__))"
],
"browse": {
"path": [
// 下面路径中的 D:/App/MinGw 部分需要替换成你的 MinGw-w64 安装路径
"${workspaceFolder}/**",
"D:/App/MinGW/mingw64/x86_64-w64-mingw32/include",
"D:/App/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++",
"D:/App/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/tr1"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}],
"version": 4
}
留意带注释部分的内容,需要将路径修改成你自己的安装路径哦。
7. 配置调试程序 launch.json
打开已经编写好的 hello.c ,然后按 F5
调试。因为是第一次调试,系统会弹出 选择环境
面板,这里选择 C++(GDB/LLDB)
。
选择运行环境后,VS Code 会在工作区.vscode
文件夹下创建 luanch.json
模板文件并打开,将文件内容清空,复制下面的内容到文件中并保存:
{
"version": "0.2.0",
"configurations": [{
// 配置 VS Code 调试行为:
"name": "GDB Debug", // 设置在启动配置下拉菜单中显示调试配置的名称。
"preLaunchTask": "Compile", // 调试会话开始前要运行的任务。
"type": "cppdbg", // 设置要使用的基础调试器。使用 GDB 或 LLDB 时必须是 cppdbg 。
"request": "launch", // 设置启动程序还是附加到已经运行的实例。启动或附加 ( launch | attach ).
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 调试器将启动或附加的可执行文件的完整路径。
"externalConsole": true, // 设置是否显示外部控制台。
"logging": { // 用于确定应该将哪些类型的消息记录到调试控制台。
"exceptions": true, // 是否应将异常消息记录到调试控制台。默认为真。
"moduleLoad": false, // 是否应将模块加载事件记录到调试控制台。默认为真。
"programOutput": true, // 是否应将程序输出记录到调试控制台的可选标志。默认为真。
"engineLogging": false, // 是否应将诊断引擎日志记录到调试控制台。默认为假。
"trace": false, // 是否将诊断适配器命令跟踪记录到调试控制台。默认为假。
"traceResponse": false // 是否将诊断适配器命令和响应跟踪记录到调试控制台。默认为假。
},
// 配置目标应用程序:
"args": [], // 设置调试时传递给程序的命令行参数。
"cwd": "${workspaceFolder}", // 设置调试器启动的应用程序的工作目录。
"environment": [], // 设置调试时添加到程序环境中的环境变量,例如: [ { "name": "squid", "value": "clam" } ]。
// 自定义 GDB 或者 LLDB:
"windows": {
"MIMode": "gdb", // 指定 VS Code 连接的调试器,必须为 gdb 或者 lldb。
"miDebuggerPath": "D:/App/MinGW/mingw64/bin/gdb.exe" // 调试器的路径,修改为你的安装路径
},
"miDebuggerArgs": "", // 传递给调试器的附加参数
"stopAtEntry": false, // 设置调试器是否停止在目标的入口(附加时忽略)。默认值为 false。
"setupCommands": [{ // 执行下面的命令数组以设置 GDB 或 LLDB
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing", // 鼠标悬停查看变量的值,需要启用 pretty-printing 。
"ignoreFailures": true // 忽略失败的命令,默认为 false 。
}]
}]
}
留意luanch.json
中的注释内容,记得把 “miDebuggerPath” 参数修改成你自己安装位置里的 gdb.exe
gdb.exe
位于 {MinGW-w64安装位置}\mingw64\bin
下面。
8. 配置调试前执行的任务 task.json
再按一次 F5
,会弹出“找不到任务”的提示窗口,点击 配置任务
按钮,如下图所示:
然后在弹出的命令面板选择 使用模板创建 task.json 文件
,如下图所示:
继续选择 Others 运行任意外部命令的示例
,如下图所示:
完成以上步骤之后,会在工作区的 .vscode
目录下生成 tasks.json
文件,并自动打开 task.json
文件。
接下来我们将 task.json
文件内容清空,复制下面的内容到文件中并保存:
{
// 有关 tasks.json 格式的参考文档:https://go.microsoft.com/fwlink/?LinkId=733558 。
"version": "2.0.0",
"tasks": [{
"label": "Compile",
"type": "shell", // { shell | process }
// 适用于 Windows 的配置:
"windows": {
"command": "gcc",
"args": [
"-g",
"\"${file}\"",
"-o",
"\"${fileDirname}\\${fileBasenameNoExtension}.exe\""
// 设置编译后的可执行文件的字符集为 GB2312:
// "-fexec-charset", "GB2312"
// 直接设置命令行字符集为 utf-8:
// chcp 65001
]
},
// 定义此任务属于的执行组:
"group": {
"kind": "build", // { build | test }
"isDefault": true // { true | false }
},
// 定义如何在用户界面中处理任务输出:
"presentation": {
// 控制是否显示运行此任务的面板。默认值为 "always":
// - always: 总是在此任务执行时显示终端。
// - never: 不要在此任务执行时显示终端。
// - silent: 仅在任务没有关联问题匹配程序且在执行时发生错误时显示终端
"reveal": "silent",
// 控制面板是否获取焦点。默认值为 "false":
"focus": false,
// 控制是否将执行的命令显示到面板中。默认值为“true”:
"echo": false,
// 控制是否在任务间共享面板。同一个任务使用相同面板还是每次运行时新创建一个面板:
// - shared: 终端被共享,其他任务运行的输出被添加到同一个终端。
// - dedicated: 执行同一个任务,则使用同一个终端,执行不同任务,则使用不同终端。
// - new: 任务的每次执行都使用一个新的终端。
"panel": "dedicated"
},
// 使用问题匹配器处理任务输出:
"problemMatcher": {
// 代码内问题的所有者为 cpp 语言服务。
"owner": "cpp",
// 定义应如何解释问题面板中报告的文件名
"fileLocation": [
"relative",
"${workspaceFolder}"
],
// 在输出中匹配问题的实际模式。
"pattern": {
// The regular expression.
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
// 第一个匹配组匹配文件的相对文件名:
"file": 1,
// 第二个匹配组匹配问题出现的行:
"line": 2,
// 第三个匹配组匹配问题出现的列:
"column": 3,
// 第四个匹配组匹配问题的严重性,如果忽略,所有问题都被捕获为错误:
"severity": 4,
// 第五个匹配组匹配消息:
"message": 5
}
}
}]
}
9. 完成
到这里,C 开发环境就已经配置完毕。接下来我们在 hello.c 的编辑窗口按 F5
运行下,看下效果。
如果你还想再创建其他的 C 语言开发工作区,我们只需要新建一个文件夹,再把现在已有工作区目录下的 .vscode
文件夹复制到新建的文件夹即可。最终发现,对于工程中存在多文件的形势支持不太友好。
点击阅读原文
使用 Visual Studio Code 搭建 C/C++ 开发和调试环境的更多相关文章
- Visual Studio Code搭建NodeJs的开发环境
一.Visual Studio Code搭建NodeJs的开发环境 1.下载安装NodeJs并配置环境变量 可以参考:NodeJs的安装和环境变量配置 2.下载安装 VS Code编辑器 可以参考:V ...
- Visual Studio Code 搭建 C/C++开发环境方法总结
之前看错资料踩了不少坑,先将可行经验总结如下: 1. 下载 Visual Studio Code 并安装.地址:https://code.visualstudio.com 2. 安装 C/C++插件与 ...
- 使用Visual Studio Code搭建TypeScript开发环境
使用Visual Studio Code搭建TypeScript开发环境 1.TypeScript是干什么的 ? TypeScript是由微软Anders Hejlsberg(安德斯·海尔斯伯格,也是 ...
- Windows下visual studio code搭建golang开发环境
Windows下visual studio code搭建golang开发环境 序幕 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org),导致一些包无法安装 ...
- Visual Studio Code中配置GO开发环境
在Visual Studio Code中配置GO开发环境 一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的 ...
- 基于Visual Studio Code搭建Golang开发调试环境【非转载】
由于对Docker+kubernetes的使用及持续关注,要理解这个平台的原理,势必需要对golang有一定的理解,基于此开始利用业余时间学习go,基础语法看完之后,搭建开发环境肯定是第一步,虽然能g ...
- Visual Studio Code 搭建Python开发环境
1.下载Python https://www.python.org/downloads/windows/ 选择一个版本,目前2.0的源码比较多,我下载的2.7.12 2.配置环境变量 3.Visual ...
- Visual Studio Code搭建Python开发环境方法总结
更新:目前VSCode官方Python插件已经支持代码运行与调试,无需安装Code Runner插件. 1.下载安装Python,地址 https://www.python.org/downloads ...
- 在Visual Studio Code中配置GO开发环境
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
随机推荐
- api测试用例(编写思路)
在API的自动化测试维度中,测试维度分为两个维度,一个是单独的对API的验证,客户端发送一个请求后,服务端得到客户端的请求并且响应回复给客户端: 另外一个维度是基于业务场景的测试,基于业务场景的也就是 ...
- BUUOJ [CISCN2019 华北赛区 Day2 Web1]Hack World
补一下这道题,顺便发篇博客 不知道今年国赛是什么时候,菜鸡还是来刷刷题好了 0X01 考点 SQL注入.盲注.数字型 0X02自己尝试 尝试输入1 赵师傅需要女朋友吗???随便都能有好吧 输入2 ?? ...
- 重磅!阿里发布《Java开发手册(泰山版)》
最近,阿里的<Java开发手册>又更新了,这个版本历经一年的修炼,取名:<Java开发手册(泰山版)>正式出道. 正所谓无规矩不成方圆,在程序员的世界里,也存在很多规范,阿里出 ...
- js中string转map的方法
例如: var r = "{'msg':'你好'}" ; var map = eval("("+r+")"); //r为String类型的数 ...
- 漫谈LiteOS-端云互通组件-MQTT开发指南(下)
1.介绍 SDK简介 Agent Tiny是部署在具备广域网能力.对功耗/存储/计算资源有苛刻限制的终端设备上的轻量级互联互通中间件,您只需调用API接口,便可实现设备快速接入到物联网平台以及数据上报 ...
- Python自学从入门到就业之函数基础(小白必看)
函数介绍 <1>什么是函数 请看如下代码: print(" _ooOoo_ ") print(" o8888888o ") print(" ...
- Qt5 escape spaces in path
There are two possible ways. You can either use escaped quotes (inserting the string between quotes) ...
- opencv-0-项目启程
opencv-0-项目启程 opencvC++QT 开始 无数次说要开始 opencv 的系列, 但是都由于各种原因没有坚持下去, 这次我做最后一次尝试, 也做最后一次坚持, 如果不做下去, 我就再也 ...
- NumPy学习指南(第2版)
第一章 NumPy快速入门 首先,我们将介绍如何在不同的操作系统中安装NumPy和相关软件,并给出使用NumPy的简单示例代码. 然后,我们将简单介绍IPython(一种交互式shell工具). 如前 ...
- 《OSPF和IS-IS详解》一1.5 ARPANET内的路由选择
本节书摘来异步社区<OSPF和IS-IS详解>一书中的第1章,第1.5节,作者: [美]Jeff Doyle 译者: 孙余强 责编: 傅道坤,更多章节内容可以访问云栖社区"异步社 ...