C++开发环境的搭建-Windows:VSCode+mingw64+CMake

news2024/9/22 15:43:55

文章目录

      • 一、软件安装
        • 1. 网址及下载的软件
        • 2. VSCode中配置关于C++的最简插件:
      • 二、C++调试环境的编译要求
        • 1. 在编译时要带-g参数
        • 2. 多文件编译需要分步编译
      • 三、VSCode的调试配置如下:
        • 1. 单文件调试设置
        • 4. 多文件调试设置


一、软件安装

1. 网址及下载的软件

  • VSCode下载地址: https://code.visualstudio.com/
  • mingw64下载地址: https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/
    在这里插入图片描述
    推荐下载:x86_64-win32-seh(x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z)

在C++中有 try…throw…catch,当它执行这种结构时,它需要保存现场还原现场,而 sjlj, seh, dwarf 正是实现这类过程的三种方式:

  • sjlj 全称是 SetJump LongJump,前者设还原点,后者跳到还原点。
  • seh 是 Borland 公司的,微软买了其专利使用权,它利用了FS段寄存器,将还原点压入,收到异常时弹出。
    相较而言,sjlj 是 C 标准库就有的东西,seh 在 2014 年前是有专利的,从性能上说 seh 比 sjlj 快。
  • dwarf 我是在开源平台 MinGW 见到这名称,因为专利原因 MinGW 以前并不支持 seh,也许是为了保证性能,它又提供了 dwarf 这种方式。

也可以尝试一下集成安装包:https://nuwen.net/mingw.html

  • CMake下载地址:https://cmake.org/download/
  • 包管理器vcpkg下载地址(可选):https://vcpkg.io/en/

注意:用cmake编译项目时可能需要指定架构 cmake … -A Win32

  • 控制台(可选):https://conemu.github.io/ 或者 https://github.com/cmderdev/cmder

x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z解压后的mingw64文件夹假定在D:\mingw64,需要把D:\mingw64\bin的路径加入Path环境变量(可以是用户环境变量)。

2. VSCode中配置关于C++的最简插件:

  • C/C++ Extension Pack (是打包安装,一次性把所有C++相关的插件都安装了)
  • Include Autocomplete
  • Better C++ Syntax
  • C/C++ Snippets
  • GBKtoUTF8

二、C++调试环境的编译要求

1. 在编译时要带-g参数

g++ -g ./test.cpp -o t

2. 多文件编译需要分步编译

分步编译而不是编译链接一起执行,这样能够节省编译时间。

# 第一步:先编译生成.o文件
g++ -g main.cpp -c
g++ -g add.cpp -c
g++ -g multi.cpp -c
# 第二步:链接生成可执行文件
g++ *.o -o main
# 第三步:修改main.cpp源文件,重新生成被修改文件的.o文件。
g++ -g main.cpp -c
# 第四步:再链接生成可执行文件
g++ *.o -o main

三、VSCode的调试配置如下:

1. 单文件调试设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
记得要切回源码文件标签页
在这里插入图片描述
捕获到断点
在这里插入图片描述
F5键是 运行->启动调试 的快捷键。
接下来配置命令自动化设置(注意要切换到C++的源代码文件页
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
生成的tasks.json不用修改,只需记录tasks.json文件中的”label“配置,并把label选项的内容拷贝到launch.json中完成配置即可。
在这里插入图片描述

4. 多文件调试设置

配置基本与前边单文件调试设置类似。结合CMake我们配置如下:
CMakeLists.txt

cmake_minimum_required(VERSION 3.20)
project(test)
add_executable(main main.cpp multip.cpp add.cpp main.h)
add_definitions("-Wall -g")

在这里插入图片描述
或者使用快捷键Ctrl + Shift + P
在这里插入图片描述
如果上一步CMake:Configure出现错误,请卸载如下插件并重新安装:
在这里插入图片描述
然后VSCode将自动扫描本机安装的C++编译器。之后:
在这里插入图片描述
在这里插入图片描述

这里要注意:VSCode中将一个打开的目录作为项目目录,并在该目录中自动生成.vscode目录——该目录中的settings.json作为CMake插件在VSCode中的配置文件。应该将本项目的总控CMakeLists.txt放置在和.vscode/同级的目录中,否则VSCode的CMake插件将不识别项目的目录。

在.vscode/中只涉及两个配置文件(多文件调试场景):settings.json和launch.json。
其中settings.json主要用于配置CMake插件,而launch.json用于调试配置。
launch.json文件需要修改以下内容:

{
    "version": "0.2.0",
    "configurations": [
      "program": "${fileDirname}\\build\\${fileBasenameNoExtension}.exe",
      "miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe"
    ]
}

主要是在program的配置内容中加了build这一级目录(插件的约定)。
接下来F5调试项目如下:
在这里插入图片描述
也可以点击状态栏的如下图标:
在这里插入图片描述
如果修改了源文件,则需要点击Build按钮重新编译一下。

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

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

相关文章

【JavaEE进阶】——第六节.第一个MyBatis程序

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:JavaEE进阶 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录 前…

计算机视觉(5)—— 图像分类

目录 五、图像分类 5.1 AlexNet 5.2 VGG 5.3 GoogLeNet、Inception 5.3.1 Inception V1 5.3.2 Inception V2 5.3.3 Inception V3 5.3.4 Inception V4 5.4 ResNet 残差网络 5.4.1 ResNet 5.4.2 ResNeXt 5.5 CNN设计准则 五、图像分类 5.1 AlexNet 5.2 VGG 5.3 Go…

【剑指 Offer】05,替换字符创中的空格;难度等级:简单。易错点:C++中 char 和 string 类型的转换

【剑指 Offer】05,替换字符创中的空格;难度等级:简单。 文章目录 一、题目二、题目背景三、我的解答四、易错点五、知识点:char 和 string 类型的转换 一、题目 二、题目背景 在网络编程中,如果 URL 参数中含有特殊字…

消息推送平台的实时数仓?!flink消费kafka消息入到hive

大家好,3y啊。好些天没更新了,并没有偷懒,只不过一直在安装环境,差点都想放弃了。 上一次比较大的更新是做了austin的预览地址,把企业微信的应用和机器人消息各种的消息类型和功能给完善了。上一篇文章也提到了&#…

windows安装Anaconda

Anacond是什么? 和Python有啥关系? 1、Anacond 是一个python的发行版,包括了python和很多常见的软件库, 和一个包管理器conda。常见的科学计算类的库都包含在里面了,使得安装比常规python安装要容易。 2、Anaconda是专注于数据分…

分布式系统概念和设计——时间和全局状态(分布式系统中的时间问题)

分布式系统概念和设计 时间和全局状态 全局物理时间的缺乏使我们很难查明分布式程序的执行时状态。 我们经常需要知道当进程B处在某种状态依赖进程是什么状态,但不能通过依靠物理时钟理解一个同一个时刻到底是什么情况。 维护分布数据一致性算法检查发送给服务器的…

数学(三) -- LC[1010][1015] 可被 K 整除的最小整数

1 可被 K 整除的最小整数 1.1 题目描述 题目链接:https://leetcode.cn/problems/smallest-integer-divisible-by-k/description/ 1.2 思路分析 模运算 如果让你计算 1234 ⋅ 6789 1234 \cdot 6789 1234⋅6789 的个位数,你会如何计算? 由于…

c高级day2

#include <stdio.h> #include <stdlib.h> #include <string.h>int arrMAX_1(void *p,int n,int m,int x,int y); int arrMAX_2(void *p,int n,int m,int x,int y); int main(int argc, const char *argv[]) {int n0,m0;printf("请输入行数i 列数j\n&quo…

Baumer工业相机堡盟工业相机如何进行多个工业相机IP地址配置

Baumer工业相机堡盟工业相机如何进行多个工业相机IP地址配置 Baumer工业相机Baumer工业相机进行多相机IP配置的技术背景Baumer工业相机如何进行多相机IP配置1.配置Baumer工业相机连接的PC端IP地址2.配置Baumer工业相机的IP地址 Baumer工业相机 Baumer工业相机堡盟相机是一种高…

R 中的探索性相关分析

动动发财的小手&#xff0c;点个赞吧&#xff01; 本文[1] 相关分析是探索两个或多个变量之间关系的最基本和最基础的方法之一。您可能已经在某个时候使用 R 执行过相关分析&#xff0c;它可能看起来像这样&#xff1a; cor_results <- cor.test(my_data$x, my_data$y, …

手机上调试pc端电脑上的项目

文章目录 前言1、window r 打开电脑命令窗口并输入cmd点击确定或者敲击回车键2、在cmd命令行面板上输入ipconfig获取本电脑的ip地址3、在手机浏览器中输入http://192.168.XX.XX:8080 即可 前言 手机上调试电脑运行的项目的前提条件是手机和电脑公用一个局域网&#xff08;也就…

APP 性能优化你掌握的怎么样?简单聊聊?

产品性能是每个技术团队比较关心的一件事&#xff0c;不管是产品上线前到上线后&#xff0c;都需要对产品进行性能监控和优化&#xff0c;如果产品在运行过程中出现了问题&#xff0c;是很影响用户的体验感受。 所以在一些大厂技术团队中&#xff0c;是非常看重个人性能优化的…

面向开发人员的 ChatGPT 提示词教程中文版

面向开发人员的 ChatGPT 提示词教程中文版 1. 指南1-1. 提示的指南1-2. 配置1-3. 提示语原则原则 1: 写出清晰而具体的指示技巧 1: 使用分隔符来清楚地表明输入的不同部分技巧 2: 要求提供结构化的输出技巧 3: 要求模型检查条件是否得到满足技巧 4: "少许样本"提示 原…

为你推荐一款最好用的免费截图工具-Snipaste,截图高清、智能模糊还支持滚动长截图!!!

写文章经常需要插入截图&#xff0c; 但是常常很难有顺手的截图工具&#xff0c; 常见的难题是&#xff1a; 很难滚动长屏截图&#xff0c; 截图中马赛克处理很麻烦&#xff0c; 输出的截图图像质量差。 经过大量的工具使用对比&#xff0c; 这里推荐一个最好用的截图工具。 Sn…

Fotran学习:chapter8函数

1.子程序(subrountine)的使用 把常常用于使用、具有特定功能的程序代码独立出来&#xff0c;封装程子程序&#xff0c;以后调用使用call即可。 program chapter4_exercise !主程序implicit nonecall sub1()call sub2()pauseend program chapter4_exercisesubroutine sub1() !子…

产品经理制,互联网公司发扬光大的

产品经理制&#xff0c;在互联网公司发扬光大 张小龙被称作&#xff1a;七星产品经理 其实&#xff0c;中小企业老板基本是首席产品经理 趣讲大白话&#xff1a;像带孩子一样做产品 【趣讲信息科技160期】 **************************** 产品经理制核心问题解决的是&#xff1a…

STM32F4_随机数发生器(RNG)

目录 1. 随机数发生器RNG是什么 2. RNG随机发生器框图 3. 运行RNG 4. RNG寄存器 4.1 RNG控制寄存器&#xff1a;RNG_CR 4.2 RNG状态寄存器&#xff1a;RNG_SR 4.3 RNG数据寄存器&#xff1a;RNG_DR 5. 库函数配置随机数发生器 6. 实验程序 6.1 main.c 6.2 RNG.c 6.…

植物奶站上风口

不知不觉间&#xff0c;植物奶无处不在。逛街&#xff0c;便利店里有燕麦奶、椰奶、豆奶&#xff0c;星巴克、肯德基有燕麦拿铁&#xff1b;打开小红书&#xff0c;有人做各种植物奶产品的测评结果&#xff0c;有人分享优质植物奶的自制方法…… 这场“风”并非空穴而来。 一…

软件工程开发文档写作教程(07)—招投标文件写作规范

本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文参考资料&#xff1a;电子工业出版社《软件文档写作教程》 马平&#xff0c;黄冬梅编著 招投标文件概述 国内的软件项目招投标文件的写作规则并不存在行业标准。许多大型企业的信息…

面向开发人员的 ChatGPT 提示词教程 - ChatGPT Prompt Engineering for Developers

面向开发人员的 ChatGPT 提示词教程 - ChatGPT Prompt Engineering for Developers 1. 指南(原文: Guidelines)1-1. 提示的指南(原文: Guidelines for Prompting)1-2. 配置1-3. 提示语原则(原文: Prompting Principles)原则 1: 写出清晰而具体的指示(原文: Write clear and spe…