win10 VScode配置GCC(MinGW)

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475
前提

  1. 安装 Visual Studio Code
  2. 安装 C/C++ 扩展 for VS Code 也可以在vscode的extension界面搜索’c’查找插件安装

image-20220222160721506
3. 获取最新的 Mingw-w64 ,或者通过 MSYS2 安装
4. 添加 Mingw-w64的bin文件夹路径到系统环境变量中,bin路径取决于Mingw-w64的安装路径,C:\XXX\XXX\mingw64\bin示例,步骤如下

1. 在底栏的搜索框中,搜索“设置”,打开win设置程序
2. 在设置中,搜索系统环境变量
3. 选择系统中的`path`变量(个人用户的也可以),点击编辑
4. 新建一个环境变量,将Mingw-w64的bin文件夹路径添加进去。
5. 点击确定保存更新路径,需要重新打开cmd才能路径生效
  1. 检查是否成功安装,打开cmd,输入
gcc -v

如果没有成功输出版本号,那说明安装不成功

Hello World!

创建一个空文件夹projects用来存放vscode项目文件。再projects中创建一个子文件夹helloworld,然后在vscode中打开这个helloworld文件夹。

可以在cmd完成这项操作:

mkdir projects
cd projects
mkdir helloworld
cd helloworld
code .

code .命令是指在此文件夹中打开vscode。

添加源文件

添加helloworld.c


复制下面代码,添加到文件中

#include int main()
{printf("Hello world!");return 0;
}

编译

这一步要创建tasks.json,文件是用于告诉vs code怎么编译程序

在主菜单中,选择 Terminal > Configure Default Build Task. 选择一个编译器点击,c语言就选择gcc,c++就选择g++


选择之后,tasks.json会被创建在.vscode文件夹中。文件内容与下文相似

{"tasks": [{"type": "cppbuild","label": "C/C++: gcc.exe build active file","command": "C:/msys64/mingw64/bin/gcc.exe","args": ["-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "compiler: C:/msys64/mingw64/bin/gcc.exe"}],"version": "2.0.0"
}

command: 指定编译器的路径

args: 指定将传递给gcc的命令行参数,这些参数必须按照编译器期望的顺序指定。这些参数告诉gcc获取活动文件(${file}),先编译它,然后在当前文件夹(${fileDirname})创建一个可执行文件,其名字与活动文件一样,但是后缀是.exe。(${fileBasenameNoExtension}.exe)

label: 这是你在任务列表中看到的,可以随便给它起个名字。

"isDefault": true 指定该任务将在按下Ctrl+Shift+B时运行,只是为了方便使用,也可以在 Terminal: Run Build Task 中编译文件

运行编译

  1. 回到helloworld.c,可以通过Ctrl+Shift+B快捷键编译,也可以点击Terminal: Run Build Task编译
  2. 编译成功之后,会在集成的terminal中输出类似下图的信息


3. 点击任何键退出界面。运行 dir 命令将会看到新创建的 helloworld.exe

可以在terminal中运行exe文件 (helloworld.exe 或者 .\helloworld.exe)

图片仅作参考,本实例实际运行输出为Hello world!

编辑json文件

使用"${workspaceFolder}\\*.c" 代替 ${file},编译时会编译当前文件夹中所有的.c文件,输出文件名也要修改为"${fileDirname}\\${fileBasenameNoExtension}.exe"

debug

在此操作中会创建一个launch.json文件。当你按F5调试程序时,VS Code需要使用launch文件来启动GDB调试器。

  1. 在主菜单中,选择Run > Add Configuration… 然后选取 C++ (GDB/LLDB)
  2. 然后再选取 gcc.exe build and debug active file(c语言就选gcc,c++就选取g++)

完成操作后会创建一个launch.json文件,内容与下方类似

{"version": "0.2.0","configurations": [{"name": "g++.exe - Build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "C/C++: g++.exe build active file"}]
}

program: 设置指定要调试的程序

stopAtEntry: 默认为false,为true时,debug时会在main函数开头设置断点

preLaunchTask: 设置用于指定在启动前要执行的任务,确保与tasks.jsonlabel保持一致

C/C++ configurations

如果想要对C/C++扩展的拥有更多的控制权,需要创建一个c_cpp_properties.json文件。这将允许你改变设置,如编译器的路径,包括路径,c++标准(默认是c++ 17)以及更多。

  1. 使用快捷键Ctrl+Shift+P,搜索C/C++: Edit Configurations (UI)


2. 点击就会打开设置界面。人为改变设置,就会记录在c_cpp_properties.json文件中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

复制构造函数的用法及出现迷途指针问题

复制构造函数利用下面这行语句来复制一个对象: A (A &a) 从上面这句话可以看出,所有的复制构造函数均只有一个参数,及对同一个类的对象的引用 比如说我们有一个类A,定义如下: ?12345678910class A{public:A(int i…

Linux下压缩某个文件夹(文件夹打包)

为什么80%的码农都做不了架构师?>>> tar -zcvf /home/xahot.tar.gz /xahot tar -zcvf 打包后生成的文件名全路径 要打包的目录 例子:把/xahot文件夹打包后生成一个/home/xahot.tar.gz的文件。 zip 压缩方法: 压缩当前的文件夹 zi…

GoJS 使用笔记

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 作为商业软件,GoJs很容易使用,文档也很完备,不过项目中没有时间系统地按照文档学习&…

Android学习笔记:TabHost 和 FragmentTabHost

2019独角兽企业重金招聘Python工程师标准>>> Android学习笔记:TabHost 和 FragmentTabHostTabHost命名空间:android.widget.TabHost初始化函数(必须在addTab之前调用):setup(); 包含两个子元素:…

PostgreSQL VACUUM 之深入浅出 (二)

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 AUTOVACUUM AUTOVACUUM 简介 PostgreSQL 提供了 AUTOVACUUM 的机制。 autovacuum 不仅会自动进行 VACUUM,也…

分布式概念与协议

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 分布式协议 分布式理论概念 1. 分布式数据一致性 分布式数据一致性,指的是数据在多个副本中存储时&#xff…

java Web监听器导图详解

监听器是JAVA Web开发中很重要的内容,其中涉及到的知识,可以参考下面导图: Web监听器 1 什么是web监听器? web监听器是一种Servlet中的特殊的类,它们能帮助开发者监听web中的特定事件,比如ServletContext,H…

Linux C/C++ UDP Socket 网络通信

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 昨晚 Vv 让我给她讲讲网络编程,于是我就傻乎乎的带她入了门… 以下内容为讲课时制作的笔记~ 1. sock…

strtok和strtok_r

strtok和strtok_r原型:char *strtok(char *s, char *delim); 功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。 说明:首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。 …

Django ORM

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 目录* Django ORM ORM实操之数据库迁移 ORM实操之字段的修改 ORM实操之数据的增删改查 数据库同步 ORM创建表关系 Dja…

分享25个高质量的移动设备wordpress主题(Mobile theme)

日期:2012-9-10 来源:GBin1.com wordpress毋庸置疑是占有量最大的博客管理系统。提供强大的功能和使用的主题及其自定义模块。随着移动互联网的发展,更多的人开始使用移动设备访问互联网,为了更好的迎合用户的需要,我…

.NET NPOI导出Excel详解

http://www.cnblogs.com/yinrq/p/5590970.html .NET NPOI导出Excel详解 NPOI,顾名思义,就是POI的.NET版本。那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office的文件。 支持的文件格…

c++隐式类型转换存在的陷阱

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 目录* 目标代码 构造函数定义的隐式类型转换分析a1分析a2分析a3 1|0目标代码 旨在弄懂下面的代码,明确变量a1…

Android中将一个图片切割成多个图片[转]

有种场景,我们想将一个图片切割成多个图片。比如我们在开发一个拼图的游戏,就首先要对图片进行切割。 以下是封装好的两个类,可以实现图片的切割。仅供参考和学习。 一个是ImagePiece类,此类保存了一个Bitmap对象和一个标识图片的…

并行开发 —— 第六篇 异步编程模型

在.net里面异步编程模型由来已久,相信大家也知道Begin/End异步模式和事件异步模式,在task出现以后,这些东西都可以被task包装 起来,可能有人会问,这样做有什么好处,下面一一道来。 一: Begin/En…

C++相关

初始化列表中的初始化顺序1 class Printer{2 public:3 Printer(string name){cout<<name;}4 };5 class Container{6 public:7 Container():b("b"),a("a"){}8 Printer a;9 Printer b; 10 }; 11 12 int main…

Java中的Unsafe在安全领域的一些应用总结和复现

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 目录* 0 前言 1 基本使用 1.1 内存级别修改值1.2 创建对象1.3 创建VM Anonymous Class 2 利用姿势 2.1 修改值以关闭RASP等…

Spring Boot中使用Swagger2构建强大的RESTful API文档

由于Spring Boot能够快速开发、便捷部署等特性&#xff0c;相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的原因&#xff0c;这些终端会共用很多底层业务逻辑&#xff0c;因此我们会抽象出这样一层来同时服务于多个…

关于公司没有公网IP也没有动态IP,如何远程办公呢?

2019独角兽企业重金招聘Python工程师标准>>> 迫于公司网络环境特殊&#xff0c;没有公网IP地址&#xff0c;也没有动态IP地址&#xff0c;其实就是园区分了一根内网固定IP的网线过来&#xff0c;这两天正巧有同事要外出办公&#xff0c;问题来了&#xff0c;开发环境…

ST_LINK/V2 SWIM和SWD、JTAG下载口说明

LED状态说明 闪烁红色&#xff1a;ST-LINK/V2连接到计算机后&#xff0c;第一次USB枚举过程红色&#xff1a;ST-LINK/V2与计算机已建立连接闪烁绿色/红色&#xff1a;目标板和计算机在进行数据交换绿色&#xff1a;通讯完成橙色&#xff08;红色绿色&#xff09;&#xff1a;通…