Windows下基于VSCode搭建C++开发环境(包含整合MinGW64、CMake的详细流程)

最近想写写C++,装了VisualStudio 2022,折腾半天。对于一个用惯VSCode的人来说,总感觉IDE太笨重。于是自己网上各种查资料,自己琢磨,搭建了一套Windows下基于VSCode和CMake的C++轻量级开发环境。

具体搭建步骤

1. 下载并安装VSCode

VSCode下载地址(AzureCDN加速地址)
首先同意安装协议:
在这里插入图片描述
下一步,方便起见全部都勾上:
在这里插入图片描述
之后点击安装即可:
在这里插入图片描述

2. 安装必要的VSCode插件

这里推荐安装Microsoft官方提供的Chinese简体中文汉化包、C/C++、C/C++ Extension Pack三个插件,C/C++ Extension Pack扩展会自动为我们安装CMake、CMake Tools等插件。
在这里插入图片描述

3. 下载并解压MinGW64、CMake

MinGW全称是Minimalist GNU on Windows,也就是将Linux/Unix环境下赫赫有名的GCC编译器以及其相关的编译调试组件移植到了Windows上。通过这个工具集我们就可以编译、调试、运行和打包C/C++项目了。
MinGW64下载地址(github最新版 gcc 13.1.0)
github下载慢的话可以考虑GitHub文件加速:https://ghproxy.com

下载完成后解压到某个指定的目录即可 (记住这个目录,后面会用到)
在这里插入图片描述
之后下载CMake,CMake是一款现代化的C++编译打包工具,很多开源的C/C++都在用。个人感觉有点像Java的Maven构建工具,但功能没有Maven那么齐全。CMake下载地址(CMake官网最新版3.27.0)

下载完成后一样,解压到某个指定的目录下即可 (同样也要记住这个目录)
在这里插入图片描述

最后的重头戏就是用以上两个解压目录配置环境变量啦,打开设置->系统->系统信息:
在这里插入图片描述
点击系统信息->高级系统设置:
在这里插入图片描述
点击环境变量:
在这里插入图片描述
选择上下两个Path都可
在这里插入图片描述
安装目录\bin 配置在Path变量中,之后一路点击确定就大功告成了!
在这里插入图片描述

4. 添加.vscode目录下的配置

使用VSCode打开一个空文件夹,创建一个叫做 .vscode 的文件夹 (注意前面有个英文句号.不要漏掉了),分别创建c_cpp_properties.json、settings.json、launch.json和tasks.json四个文件,文件内容如下:

  • c_cpp_properties.json

    {"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"windowsSdkVersion": "10.0.17763.0","compilerPath": "C:\\Users\\22820\\apps\\mingw64\\bin\\g++.exe",  // 此处指定自己安装的g++.exe地址"cStandard": "c11","cppStandard": "c++11","intelliSenseMode": "${default}","configurationProvider": "ms-vscode.cmake-tools"}],"version": 4
    }
    
  • settings.json

    {"cmake.cmakePath": "C:\\Users\\22820\\apps\\cmake-3.27.0\\bin\\cmake.exe" // 此处指定自己安装的cmake.exe地址
    }
    
  • launch.json

    {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) 启动","type": "cppdbg","request": "launch","program": "${workspaceFolder}/build/cpp_learn", // build后面加CMakeLists.txt中project()中配置的项目名(CMakeLists.txt后文会介绍)"args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"preLaunchTask":"Build","miDebuggerPath": "C:\\Users\\22820\\apps\\mingw64\\bin\\gdb.exe" // 此处指定自己安装的gdb.exe地址}]
    }
    
  • tasks.json

    {// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","options": {"cwd":"${workspaceFolder}/build"},"tasks": [{"label": "cmake","type": "shell","command": "cmake","args":[".."]},{"label":"mingw32-make",      // windows下用mingw32-make,Linux/Unix下直接使用make"group":{"kind": "build","isDefault": true},"command":"mingw32-make","args": []},{"label":"Build","dependsOrder": "sequence","dependsOn":["cmake","mingw32-make"]}]
    }
    

5. 创建CMakeLists.txt文件,编写main.cpp测试

在项目的根目录下创建CMakeLists.txt(相当于Maven的pom.xml),具体内容不要细究,先抄我的:

cmake_minimum_required(VERSION 3.15)   # 指定cmake最小版本
project(cpp_learn)                     # 指定项目名称
include_directories(cpp_learn include) # 指定头文件目录
aux_source_directory(cpp_learn src)    # 指定源文件目录
add_executable(cpp_learn src/main.cpp) # 指定程序入口

之后分别创建main.h和main.cpp到根目录下的include文件夹和src文件夹中:
在这里插入图片描述
之后退出VSCode重新进一次就会发现CMake已经开始工作了,在项目根目录下生成了build文件夹,里面就是要编译的内容。其中cpp_learn.exe就是最终编译的产物。
在这里插入图片描述

还支持gdb打断点调试哦,打好断点点下面的小虫子(或者按F5)就可以开始调试了!
在这里插入图片描述

总结

通过使用VSCode搭建C++环境也不是一件很容易的事情呐!不过对于开发者来说,敢于尝试敢于瞎折腾才是最重要的,要有小马过河的精神嘛。不过话说回来这样一搞终于可以摆脱Visual Studio 2022那个笨重的家伙了hhh,而且VSCode还可以自定义颜色主题,对于我这种颜控来说简直不要太舒适~~

小彩蛋

VSCode好看的主题推荐:

  • Darcula Theme:仿照JetBrains全家桶(Intellij IDEA、Web Storm、PyCharm等)的配色,属于是对经典的复刻了
    在这里插入图片描述
  • One Dark Pro:VSCode最受欢迎的主题之一,清爽提神抗疲劳,深受广大程序员的青睐
    在这里插入图片描述
  • Atom One:有浅色和深色两款主题可供选择!而且都很好康哦
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

国产数据库-内核特性-gbase8a智能索引

国产数据库-内核特性-gbase8a智能索引 南大通用gbase8a MPP Cluster是一款分析型MPP数据库,有个特性鲜明的功能就是智能索引。该索引建立膨胀率不超过百分之一,包含基于列的统计信息,可以有效过滤数据,大幅降低数据库磁盘IO&#…

NRF52832-扩展广播

nordic论坛 我想要设置广播名称为 “一二三四五”,当广播名称为FULL_NAME时,但是广播显示还是“一?”,“?”是乱码,后来打开nrf connect观察广播,在没连接的时候,点击一下&#xff0…

CDP spark 无法读取hive表的问题

最近发现CDP中某些个别hive表, impala和hive可以正常读取,但spark 却读成空表,已排除spark参数和orc 的问题。 StackOverflow上有个相似问题 说是需要关闭以下参数: hive.create.as.insert.onlyfalse metastore.create.as.acid…

Qt中字符串比较的时候如何忽略大小写?

问题描述: 当我要比较电脑的MAC地址的时候,出现了使用ifconfig查看到的地址,和Qt使用QNetInterface获取的MAC地址有着大小写的区别。 解决办法: 方法一: 可以使用QString类的compare()函数,并将第三个参数设置为Qt::CaseInsensitive。下面是一个示例代码: #include &…

React 基础篇(一)

💻 React 基础篇(一)🏠专栏:React 👀个人主页:繁星学编程🍁 🧑个人简介:一个不断提高自我的平凡人🚀 🔊分享方向:目前主攻…

基于Matlab微分器的PID控制(附上完整源码+数据)

PID控制是一种常用的控制算法,广泛应用于工业控制和自动化系统中。在Matlab中,可以使用PID控制器对象来实现PID控制。 文章目录 说明部分代码完整源码数据下载 说明 PID控制器是一个反馈控制系统,它根据当前的偏差(即实际值与期望…

数据结构和算法——快速排序(算法概述、选主元、子集划分、小规模数据的处理、算法实现)

目录 算法概述 图示 伪代码 选主元 子集划分 小规模数据的处理 算法实现 算法概述 图示 快速排序和归并排序有一些相似,都是用到了分而治之的思想: 伪代码 通过初步的认识,我们能够知道快速排序算法最好的情况应该是: 每…

torchaudio 教程

torchaudio 教程 PyTorch 是一个开源深度学习平台,提供了从研究原型到具有 GPU 支持的生产部署的无缝路径。 解决机器学习问题的巨大努力在于数据准备。 torchaudio充分利用了 PyTorch 的 GPU 支持,并提供了许多工具来简化数据加载并使其更具可读性。 …

TCP协议如何实现可靠传输

TCP最主要的特点 TCP是面向连接的运输层协议,在无连接的、不可靠的IP网络服务基础之上提供可靠交付的服务。为此,在IP的数据报服务基础之上,增加了保证可靠性的一系列措施。 TCP最主要的特点: TCP是面向连接的输出层协议 每一条…

降龙十八掌

目录 大数据: 1 HIVE: 1.1 HIVE QL 1.1.1 创建表 1.1.2 更新表 1.1.3 常用语句 1.2 hive参数配置 大数据: 1 HIVE: 1.1 HIVE QL DDL中常用的命令有:create,drop,alter,trunc…

Python web实战 | 使用 Django 搭建 Web 应用程序 【干货】

概要 从社交媒体到在线购物,从在线银行到在线医疗,Web 应用程序为人们提供了方便快捷的服务。Web 应用程序已经成为了人们日常生活中不可或缺的一部分。搭建一个高效、稳定、易用的 Web 应用程序并不是一件容易的事情。本文将介绍如何使用 Django 快速搭…

OpenShift 4 - 可观测性之用 OpenTelemetry+Jaeger 实现 Distributed Tracing

《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在支持 OpenShift 4.13 的环境中验证 文章目录 技术架构部署 Distributed Tracing 运行环境安装测试应用并进行观测跟踪参考 说明: 本文使用的测试应用采用的是 “手动 Instrumentation” 方式在…

WPF快速开发(2):图标库知识点

文章目录 前言知识点windows资源Style:样式Setter:属性继承关系 Trigger:触发器 WPF层级划分数据绑定声明数据上下文绑定数据模板 前言 图标资源下载 iconfont 知识点 windows资源 Window.Resources:资源位置声明X:Key:资源Id,用于前端的…

Kafka 实时处理Stream与Batch的对比分析

Kafka 实时处理Stream与Batch的对比分析 一、简介1. Kafka的定义和特点2. Kafka实时处理基础架构 二、Stream和Batch1. Stream和Batch的区别2. 对比Stream和Batch的优缺点Stream的优缺点Batch的优缺点 三、使用场景1. 使用场景对比Batch使用场景Stream使用场景 2. 如何选择Stre…

PHP服务器文件日志功能

php文件日志功能 <?php w_log(123,test/); w_log(array(a>1),test/); function w_log($data, $path log/) {$root_pathstr_replace(\\, /, dirname(dirname(__FILE__)));//改成你自己目录$dir $root_path . /log/ . $path;if (!is_dir($dir)) {mkdir($dir, 0777, tr…

2023年JAVA最新面试题

2023年JAVA最新面试题 1 JavaWeb基础1.1 HashMap的底层实现原理&#xff1f;1.2 HashMap 和 HashTable的异同&#xff1f;1.5 Collection 和 Collections的区别&#xff1f;1.6 Collection接口的两种区别1.7 ArrayList、LinkedList、Vector者的异同&#xff1f;1.8 String、Str…

【云原生】Minikube 部署

minikube 介绍 minikube 是本地 Kubernetes&#xff0c;专注于让 Kubernetes 易于学习和开发。 您所需要的只是 Docker&#xff08;或类似兼容的&#xff09;容器或虚拟机环境&#xff0c;只需一条命令即可使用 Kubernetes&#xff1a;minikube start 环境准备 2 个或更多 …

前端JS 展示上传图片缩略图(本地图片读取)

需求&#xff1a; 点击上传图片按钮&#xff0c;选择图片以后&#xff0c;不请求后端接口&#xff0c;直接将图片展示在缩略图中。 解决方案&#xff1a; 使用 FileReader 和 FileReader 中的 readAsDataURL 方法。 第一步 从input[type“file”] (上传文件标签) 里面拿到fil…

数据库管理-第九十四期 19c OCM之路-第四堂(02)(20230725)

第九十四期 19c OCM之路-第四堂&#xff08;02&#xff09;&#xff08;20230725&#xff09; 第四堂继续&#xff01; 考点3&#xff1a;SQL statement tuning SQL语句调优 收集Schema统计信息 exec dbms_stats.gather_schems_stats(HR);开启制定表索引监控 create index…

AutoSAR系列讲解(实践篇)9.2-信息发送的Filter机制

再强调一遍哈,这几节的内容大家看不懂没关系。都属于不常用的知识,仅作了解,假如用到了可以再挖出来看看。还有一点,很多的英文不太好翻译,比如这里的Filter,翻译成滤波,筛选我感觉都不太贴切,干脆就直接叫Filter了,之后应该会出现类似的英文,博主尽量想办法让大家理…