【Wins+VSCode】配置C++开发环境

news2025/7/18 8:15:13

目录

  • 1、安装vscode
  • 2、安装中文包和c++扩展包
  • 3、安装c++编译工具:g++
  • 4、运行代码测试
  • 5、lauch.json
  • 6、tasks.json
  • 7、问题
    • 7.1、找不到gcc任务
  • Reference

1、安装vscode

官网下载就可以了,免费的: https://code.visualstudio.com/

2、安装中文包和c++扩展包

直接在左侧找到扩展按键,安装c++扩展包:
在这里插入图片描述

3、安装c++编译工具:g++

直接安装 https://sourceforge.net/projects/mingw-w64/files/

再把安装好的mingw加入系统环境变量:
在这里插入图片描述
验证是否安装成功:
在这里插入图片描述

4、运行代码测试

新建测试文件:

#include<iostream>
using namespace std;
int main()
{
    cout << "hello world" << endl;
    return 0;
}

点击以调试/非调试模式运行:

在这里插入图片描述
选GDB:
在这里插入图片描述
选g++:
在这里插入图片描述

这个时候就可以正常运行显示结果了,程序可以正常执行,调试、运行都可以。
在这里插入图片描述
但是细心的同学可以发现,在左侧文件此时多了两个文件:lauch.json、tasks.json。这是两个非常重要的文件,是整个开发的重点配置,需要好好了解清楚他们是干嘛的。

5、lauch.json

功能:用于添加gdb调试任务,运行可执行文件。

初始化生成:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",  // 调用的exe名,要与tasks生成的exe名一致
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,  // // 决定输出是单独外部黑窗口显示,还是在IDE里终端黑窗口显示
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ], 
            "preLaunchTask": "C/C++: g++.exe 生成活动文件"   
            // 此项命名需要与tasks.json中的label项命名一致,作用是每次调用launch时会先调用tasks.json,从而不用自己每次都ctrl+shift+b手动生成最新任务后,才能调用launch
        }
    ]
}

【参数】

  1. program:为要调试程序的路径;
  2. args:运行时添加的参数;
  3. stopAtEntry:默认False,True则会在函数入口中赞停;
  4. externalConsole:是否在外部控制外运行,设置为true会弹出windows的运行窗口;
    5. miDebuggerPath:本机的gbd调试器的路径;
  5. setupCommands:启动调试前为GDB调试器设置相应的命令;
    7. preLaunchTask:运行调试前执行的任务填写task.json文件里面的任务名(label项);

6、tasks.json

功能:相当于gcc编译步骤汇总,也可以调用makefile,最终生成可执行文件。

描述了需要调用什么命令来执行任务,相当于直接在命令行cmd中执行命令。对应到c++开发,就是程序构建的过程。

初始化生成:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",  // 需与lauch.json中"preLaunchTask"项命名一致
            "command": "D:\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"  // 输出exe名,要与launch中调用的program项命名一致
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

【参数配置】

  1. label:此任务的名称,会被lanch.json中的preLaunchTask所使用;
  2. command:执行的命令,如果时C++开发,就是g++gcc这些构建命令,这里一半写系统的环境变量中的g++地址;
  3. args:执行命令时的输入参数,g++一般就采用默认的;

7、问题

关注上面的加黑的几个参数,配置好了一般不会有什么问题。

7.1、找不到gcc任务

tasks.json里的label名字和launch.json中的preLaunchTask名字没对应上,导致编译后launch不到对应exe。

分析:tasks.json是编译,launch.json是运行exe,tasks.json在lanuch之前。tasks里的label一定要跟launch.json中的preLaunchTask名字对应一致。否则会报找不到gcc任务错误。

Reference

b站: 【教程】VScode中配置C语言/C++运行环境

知乎: vscode如何在最新版本中配置c/c++语言环境中的launch.json和tasks.json?

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

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

相关文章

【Java项目】讲讲我用Java爬虫获取LOL英雄数据与图片(附源码)

&#x1f680;用Java爬一下英雄联盟数据 &#x1f4d3;推荐网站(不断完善中)&#xff1a;个人博客 &#x1f4cc;个人主页&#xff1a;个人主页 &#x1f449;相关专栏&#xff1a;CSDN专栏 &#x1f3dd;立志赚钱&#xff0c;干活想躺&#xff0c;瞎分享的摸鱼工程师一枚 &…

【Asesprite】快速自制Tileset瓦片地图集(俯视角)

使用Aseprite软件完成一个Tileset素材的制作&#xff0c;用于2D游戏开发。 目录 一、基础配置 二、草地和泥土 三、导出为TileSet素材 一、基础配置 1.创建一个96x48的画布。 2.在菜单中选择View-》GridSettings。 3.设置网格宽高为16x16。 4.点击View-》Show-》Grid显…

IOS手机和车机互联自动化测试

在酷热的夏天&#xff0c;提前打开空调&#xff1b;在寒冷的冬天&#xff0c;提前加热座椅和方向盘。这些贴心的功能都是通过手机远程控制汽车实现的。随着汽车新四化的进程推进&#xff0c;类似手机和车机连接的功能必然越来越多。 作为汽车行业的工程师&#xff0c;我们都知道…

Jenkins 忘记登录密码解决办法

今天给大家分享下 jenkins 登录密码忘记的解决办法&#xff0c;方法不唯一&#xff0c;都能解决问题&#xff0c;按照自己的习惯来做更好。 1、先停止 jenkins 服务 systemctl stop jenkins 此步骤可以结合 ps -ef | grep jenkins 和 kill -9 jenkins进程号 一起解决2、找到…

简单实用的Python图像处理库Pillow

Pillow图像处理Pillow 库的安装图象处理基本知识图像的RGB 色彩模式像素阵列Image 模块打开和新建混合透明度混合处理遮罩混合处理复制和缩放复制图像缩放像素缩放图像粘贴和裁剪粘贴裁剪图像图像旋转格式转换covert()transpose()分离和合并分离合并滤镜其他内置函数ImageFilte…

A Blockchain-Driven IIoT Traffic Classification Service for Edge Computing 论文学习

A Blockchain-Driven IIoT Traffic Classification Service for Edge Computing IEEE INTERNET OF THINGS JOURNAL&#xff0c;2021 文章目录A Blockchain-Driven IIoT Traffic Classification Service for Edge ComputingSummaryResearch Objective(s)Background / Problem S…

用Canvas绘制一个数字键盘

Hello啊老铁们&#xff0c;这篇文章还是阐述自定义View相关的内容&#xff0c;用Canvas轻轻松松搞一个数字键盘&#xff0c;本身没什么难度&#xff0c;这种效果实现的方式也是多种多样&#xff0c;这篇只是其中的一种&#xff0c;要说本篇有什么特别之处&#xff0c;可能就是纯…

OpenGL 灰度图

目录 一.OpenGL 灰度图 1.IOS Object-C 版本1.Windows OpenGL ES 版本2.Windows OpenGL 版本 二.OpenGL 灰度图 GLSL Shader三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 &…

振弦采集模块AABB 通讯协议

振弦采集模块AABB 通讯协议 AABB 通讯协议是一种非标准自定义协议&#xff0c; 相较于 MODBUS 通讯协议&#xff0c;结构更简单&#xff0c;指令生成方法更容易&#xff0c;便于进行快速测试。 AABB 通讯协议支持单寄存器读写两种指令。 &#xff08; 1&#xff09; 读取单个寄…

《Care Bears 爱心熊》人物化身来到 The Sandbox 元宇宙!

无论你想要快乐、和谐、幸运还是温暖&#xff0c;都会有一个适合你的爱心熊人物化身&#xff01;&#x1f43b; 想成为一只爱心熊吗&#xff1f; 《爱心熊》作品集是由 3060 个独特的 The Sandbox 人物化身组成的作品集&#xff0c;可在欢快而多彩的元宇宙世界中玩耍。每个人物…

【Linux】软件包管理器yum和编辑器vim(内附动图)

大家好我是沐曦希&#x1f495; 文章目录1.Linux 软件包管理器 yum1.1 什么是软件包1.2 第一个软件rzsz2.Linux编辑器-vim使用2.1 vim的基本概念2.2 vim的基本操作2.3 命令模式2.3.1 光标定位2.3.2 文本复制2.4 插入模式2.5 底行模式2.5.1 调用和取消行号2.5.2 底行&#xff01…

Node.js | 详解 Cookie-Session登录验证 的工作原理

&#x1f9d1;‍&#x1f4bc; 个人简介&#xff1a;一个不甘平庸的平凡人&#x1f36c; &#x1f5a5;️ 本系列专栏&#xff1a;Node.js从入门到精通 &#x1f449; 你的一键三连是我更新的最大动力❤️&#xff01; &#x1f4e2; 欢迎私信博主加入前端交流群&#x1f339; …

Maven版本3.6.1环境配置安装

官网下载安装包配置maven环境变量配置本地仓库以及阿里云镜像官网下载安装包 下载maven安装包官网地址&#xff0c;解压即可使用&#xff0c;推荐下载apache-maven-3.6.1-bin.zip 配置maven环境变量 找到此电脑右键-->点击属性-->选择高级系统设置-->点击环境变量--&g…

EPICS记录参考--计算输出记录(calcout)

计算输出或"Calcout"记录类似于Calc记录&#xff0c;其增加了能够输出的特性(一个"output link"和一个"output event")&#xff0c;根据计算结果条件地执行它们。这种特性允许在一个EPICS数据库内实现了条件分支(例如&#xff1a;只在Record_B有…

BERT预训练模型学习笔记

1.Transforme 1.1 要做一件什么事 基本组成依旧是机器翻译模型中常见的Seq2Seq网络输入输出都很直观&#xff0c;其核心架构就是中间的网络设计了MxN&#xff0c;输入M&#xff0c;输出N 1.2 传统的RNN网络有什么问题 传统RNN是一个时序模型&#xff0c;下一个RNN的输入依靠…

野火FPGA入门(4):时序逻辑电路

文章目录第11讲&#xff1a;寄存器第12讲&#xff1a;阻塞赋值与非阻塞赋值第13讲&#xff1a;计数器第14讲&#xff1a;分频器&#xff1a;偶分频第15讲&#xff1a;分频器&#xff1a;奇分频第16讲&#xff1a;按键消抖组合逻辑存在竞争冒险 第11讲&#xff1a;寄存器 寄存…

【Debug】关于 nginx 上传文件时出现 413 及 500 错误码解决方法

先简单介绍一下 Nginx…   Nginx 作为一个高性能的 HTTP 和 反向代理 web 服务器具有占用内存少, 并发能力强等特点,可以说 Nginx 专为性能和效率而生, 如 tomcat 的并发量大约在 100 多, 而 Nginx 的并发量可以达到 5 万之多;   Nginx 的主要作用还是反向代理, 实现负载均衡…

什么是扩散模型(Diffusion Model)?

扩散模型是什么&#xff1f;如何工作以及他如何解决实际的问题 在计算机视觉中&#xff0c;生成模型是一类能够生成合成图像的模型&#xff08;文本生成图像【DALL2、Stable Diffusion】、图像生成图像【Diffusion-GAN】&#xff09;。例如&#xff0c;一个被训练来生成人脸的…

2023年天津市大学软件学院高职升本科联合招生专业考试大纲

天津市大学软件学院 2023年“高职升本科”联合招生专业考试大纲一、考试性质 天津市大学软件学院“高职升本科”联合招生专业考试是由合格的高职高专毕业生参加的选拔性考试。高等院校根据考生的成绩&#xff0c;按照已确定的招生计划&#xff0c;德、智、体全面衡量&#xff0…

MATLAB if...else...end 语句

在MATLAB的 if...else...end 语句中&#xff0c;if 语句后面可以跟一个可选择的 else 语句&#xff0c;当执行的表达式为假的时候&#xff0c;执行 else 语句。 if...else...end 语句语法&#xff1a; MATLAB 中一个 if ... else 语句的语法示例&#xff1a; if <expressio…