windows10 vscode 构建最强大的 Mingw C++ gcc 编译环境

工具准备

首先应该准备如下工具:

  1. 安装对应版本的Visual Studio Code。
  2. 安装VS Code上的C++扩展:C++ extension for VS Code。
  3. 下载MinGW-w64,考虑到是外网资源,建议选择离线版本,在线安装比较慢,不太稳定。

MinGW-w64 - for 32 and 64 bit Windows

4.将MinGW的bin目录添加至环境变量,本文为 D:\MinGW\mingw64\bin

环境变量

测试:输入控制台指令

gcc -v

测试结果

上述步骤,基本准备工作结束。

创建 workspace

1.创建工作目录,可以通过控制台指令逐步创建,也可以自己建好文件夹:

本文为测试,在桌面创建了如下文件夹 (C:\Users\hai\Desktop\VSCodeWork\helloworld):

工作目录

2.输入下述控制台指令,打开到指定文件夹,并在指定文件夹内打开VS Code:

cd C:\Users\hai\Desktop\VSCodeWork\helloworld
code .

执行结果

执行快捷键 Ctrl+Shift+P 或者 在View菜单下,打开Command Palette...菜单,输入并选择 C/C++: Edit Configurations (JSON):

json 配置脚本

打开后的配置文件

此时,会在工作路径下生成一个【.vscode】文件夹,并且文件夹内包含一个名为c_cpp_properties.json的脚本文件,如上图。此时,需要就上图中某些选项进行修改:

  • 将"compilerPath"设置为MinGW相应目录,本文为:D:\\mingw64\\bin\\gcc.exe
  • "intelliSenseMode" 设置为 "gcc-x64"
  • "includePath" ,关于该项,很多教程中给出了相应的设置方式,但是这个视具体情况而定,本文暂时不需要。
{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"compilerPath": "D:\\mingw64\\bin\\gcc.exe","cStandard": "gnu18","cppStandard": "gnu++14","intelliSenseMode": "gcc-x64"}],"version": 4
}

创建 Build Task

这个相对简单,在与上述配置文件同目录下,可以自行创建一个名为tasks.json的文件,然后将下述代码拷入其中即可:

{"version": "2.0.0","tasks": [{"label": "build hello world","type": "shell","command": "g++","args": ["-g","-o","helloworld","helloworld.cpp"],"group": "build"},{"type": "shell","label": "C/C++: gcc.exe build active file","command": "D:\\mingw64\\bin\\gcc.exe","args": ["-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${workspaceFolder}"},"problemMatcher": ["$gcc"],"group": "build"},{"type": "shell","label": "C/C++: g++.exe build active file","command": "D:\\mingw64\\bin\\g++.exe","args": ["-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${workspaceFolder}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true}}]
}

其他参数相对好理解,也不需要太过计较,下述几个参数可以注意一下:

  • "label" 表示在VS Code Command Palette中显示的名字,可根据需要随意设定;
  • "group"对象下的"isDefault"取true时,表示可通过快捷键Ctrl+Shift+B快速运行该task;
  • 注意修改"args"中的参数,以匹配项目,其中第三项为可执行文件名称(helloworld.exe),第四项为源代码文件(helloworld.cpp)。

添加源代码文件

在工程目录下,本文为C:\Users\hai\Desktop\VSCodeWork\helloworld

添加名为helloworld.cpp文件,此名称与tasks.json中保持一致,具体代码如下:

#include <iostream>using namespace std;int main(int argc, char** argv)
{cout << "Hello World!" << endl;
}

编译并生成exe

定位到tasks.json文件,使用快捷键Ctrl+Shift+B执行该文件,可创建成功。

此时在cpp文件同目录下,会生成名为 helloworld.exe 的可执行文件,与配置文件设置的文件名相同。

创建成功后如上图所示

调试设置

定位到 helloworld.cpp 文件,按快捷键 F5, 选择 C++(GDB/LLDB), 然后选择 g++.exe build and debug active file

配置调试相关设置

配置调试相关设置

等待结束,会在【.vscode】文件夹下,自动生成一个名为"launch.json"的配置文件:

launch.json

{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "g++.exe - 生成和调试活动文件","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "C/C++: g++.exe build active file"}]
}

注意,本文的配置方式与官方在顺序上稍有区别,本文将"launch.json"放在最后,是因为在按快捷键Ctrl+Shift+B创建完成项目后,再创建的"launch.json"文件中,系统自动填充了 "miDebuggerPath" 和 "program" 等对象,不需要自行设定,保持默认即可。

stopAtEntry是断点相关设置,一般设置为true。

运行程序

运行程序方式有很多,简单给出两种方式:

1.VS Code自带执行:在Debug菜单下选择 Start Without Debugging 或者快捷键 Ctrl+F5,可以简单预览结果。

设置断点时,可以选择 Start Debugging 或者快捷键 F5,可以进行简单的断点调试。

2.扩展工具:安装Code Runner扩展工具,完成后,直接在cpp中鼠标右键选择Run Code即可运行。

扩展安装

运行结果

再次创建使用

上文中的初次配置可能稍微麻烦点,但是后续使用就简单的多了。

例如现在想另起一个工程目录,新建一个测试用例,那么只需要以下4步:

  1. 将【.vscode】文件夹整体拷入新的工程文件夹内 (包含c_cpp_properties.json, launch.json,tasks.json三个配置文件);
  2. 控制台打开到工程文件夹目录,并通过"code ."指令打开VS Code;
  3. 修改tasks.json中"tasks"对象下的 "label" 和 "args"参数;
  4. 执行。

其实tasks.json中的"label"对象如果不是必须的话,可以命名为一个通用的名字,如“build My Task”等,就可以略去每次都修改该参数了。

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

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

相关文章

mysql数据库关联练习_mysql数据库建立数据表的练习(附代码)

数据库操作和学习并不难&#xff0c;难的是如何在各种实际运用情况下编写SQL语句的实现。这个过程&#xff0c;需要大量的练习&#xff0c;那么从这里开始&#xff0c;我们来讲解实现。任务概述具体关系数据库如下&#xff1a;数据库名&#xff1a;教师数据库教师表(编号 char(…

win10安装vmware tools + 无法拖拽文件解决

1、加载VMware Tools安装光盘 打开虚拟机VMware Workstation&#xff0c;启动 Ubuntu 系统 菜单栏 - 虚拟机 - 安装VMware Tools。 2、将安装文件提取到本地磁盘 打开加载的VMwareTools光盘&#xff0c;鼠标右键 VMwareTools-*.tar.gz 文件&#xff0c;提取到系统盘下的文件…

mysql 需要什么硬件配置_如何来给指定的硬件环境配置一份比较合理的MySQL配置文件-爱可生...

简介通过sysbench的oltp_read_write测试来模拟业务压力、以此来给指定的硬件环境配置一份比较合理的MySQL配置文件。环境介绍硬件配置软件环境优化层级与指导思想优化层级MySQL数据库优化可以在多个不同的层级进行&#xff0c;常见的有&#xff1a;SQL优化参数优化架构优化本文…

图片打标

在物体检测问题中&#xff0c;第一个需要解决的就是给训练集中的图片打标&#xff0c;所谓打标&#xff0c;就是用一个文件来描述图中物体的位置框坐标&#xff08;xmin&#xff0c;ymin&#xff0c;xmax&#xff0c;ymax&#xff09;&#xff0c;以定位物体的位置。 一个比较…

动态定时任务与动态生成class代码

动态定时任务 原理 采用定时任务线程池ThreadPoolTaskScheduler来实现定时任务。动态定时任务就是可以配置的&#xff0c;而不是写死在代码中。所以我们要将其写入到数据库中&#xff0c;然后暴露接口就可以进行配置比如创建、启动、结束任务。 数据库脚本 DROP TABLE IF EXIS…

docker登录mysql数据库_Docker下搭建mysql数据库

1.获取官方镜像&#xff1a;[rootCentos7 mysql]# docker pull mysql/mysql-server:latestlatest: Pulling from mysql/mysql-server1f5b026b07bc: Pull complete3d5697fc1304: Pull complete2747c84403db: Pull completedc0c445a852b: Pull completeDigest: sha256:7aba8c77f9…

LNMP与CA认证的童话故事

在前面的一篇博客中&#xff0c;我已经介绍过&#xff0c;如何通过源码编译安装LAMP&#xff0c;见教你源码编译制作LAMP详细过程 &#xff0c;这里就介绍下如何编译安装LNMP&#xff0c;以及如何在LNMP中添加ssl认证。LNMP&#xff0c;也叫做LEMP。L&#xff0c;即linux操作系…

Zabbix 最新版 5.2 版本源码安装

Zabbix 最新版 5.0 LTS 版本安装 zabbix 5.0 版本于 5 月 11 日正式发布&#xff0c;是最新的 LTS&#xff08;长期支持&#xff09;版本&#xff0c;5.0 带来很多功能和特性&#xff0c;后面会陆续推出文章介绍&#xff0c;下面主要介绍下 5.0 版本的安装。 环境要求 5.0 版…

【声卡驱动】安装realtek high definition audio后重启电脑被自动卸载替换成系统自带的realtek auto

解决步骤 先断网安装前先记录realtek auto的GUID&#xff0c;可以从设备管理器中事件中找到它&#xff0c;复制保留备用 安装 realtek high definition audio &#xff0c;重启&#xff08;断网&#xff09;在断网状态下&#xff0c;winr &#xff0c;输入gpedit.msc&#xff…

mysql explain是什么意思_mysql explain的作用是什么?

mysql explain的作用是模拟Mysql优化器是如何执行SQL查询语句的&#xff0c;从而知道Mysql是如何处理用户的SQL语句&#xff0c;提高数据检索效率&#xff0c;降低数据库的IO成本。mysql explain的作用是&#xff1a;模拟Mysql优化器是如何执行SQL查询语句的&#xff0c;从而知…

d3.js 搭建 d3-force-directed-graph 例子

d3.js 搭建 d3-force-directed-graph 例子 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <script src&q…

js 创建快捷方式

代码 <script type"text/javascript"language"javascript">//创建快捷方式[浏览器设置要低,ff不支持]functioncreateShortcut() { varfso newActiveXObject("Scripting.FileSystemObject"); varshell newActiveXObject(&quo…

OpenLDAP在linux上的部署和原理应用centos7

轻型目录访问协议&#xff08;英文&#xff1a;Lightweight Directory Access Protocol&#xff0c;缩写&#xff1a;LDAP&#xff09;是一个开放的&#xff0c;中立的&#xff0c;工业标准的应用协议&#xff0c;通过IP协议提供访问控制和维护分布式信息的目录信息。 OpenLDAP…

c# 检测cpu使用率[测试通过]

创建一个控制台应用程序&#xff0c;代码如下 代码 usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;//引用2命名空间usingSystem.Diagnostics;usingSystem.Threading;namespaceConsoleApplication1{ classProgram { staticvoidM…

mysql怎么修改表中的文字_mysql表中怎么修改字段?

在mysql表中&#xff0c;可以使用“ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;”语句来修改字段名称&#xff1b;使用“ALTER TABLE 表名 MODIFY 字段名 新数据类型;”语句来修改字段数据类型。修改字段名称MySQL 中修改表字段名的语法规则如下&#xff1a;ALTER TA…

重置mariadb密码

基本的思路是&#xff0c;以安全模式启动MariaDB&#xff0c;这样不需要密码可以直接以root身份登录&#xff0c;然后重设密码。 在Centos 7.0上的操作步骤如下&#xff1a; 首先&#xff0c;我们停掉MariaDB服务&#xff1a; systemctl stop mariadb.service #停止MariaDB在…

asp.net 取windows的所有进程

代码如下&#xff1a; 代码 #region取得windows的所有进程publicstaticstringGetCourse(){ System.Text.StringBuilder sb newSystem.Text.StringBuilder(); stringtempName ""; intbegpos, endpos; foreach(Process thisProc inSystem.Diagnostics.Proc…

asp.net 操作ftp 通用代码[测试通过]

代码如下&#xff1a; 代码 //建立目录FtpWebRequest Request (FtpWebRequest)WebRequest.Create("ftp://113.107.160.135:2121/vadmin.uuu9.com/aaa"); Request.Credentials newNetworkCredential("wanglei", "}}XnJXt4a\7datr"); …

AirFlow官方入门DAG示例

经过前两篇文章的简单介绍之后&#xff0c;我们安装了自己的AirFlow以及简单了解了DAG的定义文件&#xff0e;现在我们要实现自己的一个DAG&#xff0e; 1. 启动Web服务器 使用如下命令启用: airflow webserver 现在可以通过将浏览器导航到启动Airflow的主机上的8080端口来…

三层业务类(DAL)必用的通用方法之一

写代码有两年多的时间了&#xff0c;越来越觉得代码的通用性是衡量一个程序员的标准。 代码 #regionSqlDataReader > List///<summary>///author:Stone_W///date:2010.11.29///desc:SqlDataReader 转 List///</summary>///<param name"dr">SqlD…