3、windows环境下vscode开发c/c++环境配置(二)

前言:上一篇文章写了windows环境下,配置vscode的c/c++开发环境,这一篇讲vscode开发c/c++的配置文件,包括c_cpp_propertues.json,task.json及launch.json。

一、总体流程

通过c/c++插件我们就可以来编写c/c++程序了,但是这仅仅是可以编辑c/c++程序,将c/c++程序编译成机器可以识别的语言还需要配合mingw或者其他编译器来执行,mingw编译器配置可以参考笔者上一篇文章。同时我们还想在编辑c/c++程序的时候能有智能提示,比如一些关键字不用写出全名就可以提示进行选择,这里就需要通过一些配置文件告诉本机系统,这个配置文件就是c_cpp_propertues.json。

配置好c_cpp_propertues.json文件后,我们就可以开心的编写我们的c/c++程序里,而且会有一些智能提示,包括一些引用的头文件也不会无故报错标红了。编写好的程序需要被编译才可以运行在机器上面,这里就需要第二个配置文件task.json。task.json功能是用来builde(构建或编译)编写好的程序的。

其实前两步就可以让程序跑起来了,但是我们开发中少不了要调试程序,那就需要第三个配置文件了--launch.json。

官网对这三个文件的定位如下。

二、c_cpp_propertues.json

第一次编辑好程序后保存一般头文件下面会有红色波浪线,这就是vscode编辑器不知道这个东西是什么,所以我们就需要将这个东西所在的位置告诉vscode,复制这个告知工作的就是c_cpp_propertues.json配置文件,他的主要功能就是告诉编辑器头文件路径及一些关键字的智能提示等。

回到 Untitled-1.c 界面,按下 F1 或者按下 Ctrl+Shift+P 调出面板,输入 C/C++,选择编辑配置(UI),如下图示。注意,编辑器会提示先选择一个文件夹,方便后面编写的程序都可以使用配置文件。

此时,vscode 界面左上角的 SHENZHEN 文件夹下会出现一个 .vscode 文件夹,如下图示。

在 C/C++ 配置界面下的编译器路径,选择适合自己的,如果是 C 语言,则选择 gccC++ 则选择 g++,编译器路径是之前存放 mingw 的路径,如果当前显示的不是,则需要修改成之前存放 mingw 的路径,如下图示。

在当前界面下,将 IntelliSense 模式,设置成 windows-gcc-x64,将 C 标准设置为 c11C++ 标准设置为 c++17,如下图示。(这里设置可以根据自己实际情况)

此时,c_cpp_properties.json 文件内容如下:

三、task.json

程序写好后就需要编译了,tasks.json文件来告诉VS Code如何构建(编译)程序,可以代你执行类似于在命令行输入 gcc hello.c -o hello” 命令的操作,你只要在图形界面下操作即可生成可执行文件。

回到 Untitled-1.cpp 界面,按下 F1 或者按下 Ctrl+Shift+P 调出面板,输入 tasks,选择任务:配置默认生成任务,然后选择 C/C++:g++.exe 生成活动文件,如下图示。

此时 .vscode 文件夹中多出一个 tasks.json 文件,如下图示。

tasks.json 文件内容如上。

四、launch.json

配置好编译(构建)文件后,就可以调试运行了。launch.json 是用于运行 ( run ) 和调试 ( debug ) 的配置文件,可以指定语言环境,指定调试类型等等内容。

回到 Untitled-1.cpp 界面,按下 F1 或者按下 Ctrl+Shift+P 调出面板,输入 debug,选择调试:开始调试,然后再选择 C++ (GDB/LLDB),如下图示

点击 vscode 左上角运行下的创建 launch.json 文件,然后再选择 C++ (GDB/LLDB ) ,如下图示。 

 此时,生成了一个 launch.json 文件,如下图示。

五、补充

 c_cpp_properties.json、tasks.json、launch.json三个文件一经配置,可以在多个项目中都是用,直接复制他们所在的.vscode文件夹就可以。这里笔者将常用的三个文件的配置信息贴出,大家可以根据自己情况修改配置内容。

c_cpp_properties.json

{"configurations": [{"name": "Linux",        //配置名称,默认为系统名,可以自行更改"includePath": [        //(常用)运行项目包含.h头文件的目录,"${workspaceFolder}/**"//此处会匹配工作文件下的所有文件],                      //添加"compilerPath"后,系统include路径可不写明"defines": [],        //(常用)定义一些需要的变量,等价于在编译时写"-D变量" "compilerPath": "/usr/bin/gcc",     //编译器的路径"cStandard": "gnu17",               //C标准的版本"cppStandard": "gnu++14",           //C++标准的版本"intelliSenseMode": "gcc-x64"       //IntelliSense的一些配置,默认即可}],"version": 4
}

tasks.json

{"version": "2.0.0","tasks": [{"type": "cppbuild",        //任务类型(如果是shell,下面的command就相当于执行shell命令)"label": "环境配置测试",     //任务的名称,可以修改,但一定要和launch中的"preLaunchTask"项保持一致"command": "/usr/bin/gcc", //编译器(可执行文件)的路径"args": [                  //(常用)编译时使用的参数,和命令行下相同"-g","${fileDirname}/hello.c","-o","${fileDirname}/hello"],//上述内容相当于在命令行下输入了: gcc hello.c -o hello"options": {"cwd": "/usr/bin"     //编译器的目录},"problemMatcher": ["$gcc"                //使用gcc捕捉错误],"group": "build","detail": "compiler: /usr/bin/gcc"      //一些描述性信息}]
}

launch.json 

{"version": "0.2.0","configurations": [{"name": "运行和调试",         //运行和调试任务的名称,可自定义"type": "cppdbg",            //配置类型,默认即可"request": "launch",         //launch模式允许我们打断点进行调试,默认即可"program": "${fileDirname}/hello", //(常用)程序目录,这里相当于在命令行执行"hello""args": [],                  //(常用)程序(main函数)的入口参数"stopAtEntry": false,       //在入口处暂停,选true相当于在入口处增加断点"cwd": "${workspaceFolder}",//当前的文件目录"environment": [],          //添加到程序的环境变量"externalConsole": false,   //外部控制台,true在调试时会开启系统控制台窗口,false会使用vscode自带的调试控制台"MIMode": "gdb",            //使用gdb进行调试"setupCommands": [           //用来设置gdb的参数,默认即可{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "环境配置测试",    //(常用)运行和调试前要执行的task(编译)任务,任务名要和task.json里的"label"对应"miDebuggerPath": "/usr/bin/gdb"  //debug调试工具的路径,这里使用gdb所在的路径}]
}

六、参考文献

从零开始的vscode安装及环境配置教程(C/C++)(Windows系统)_vscode搭建编译器环境-CSDN博客

launch.json / tasks.json / c_cpp_properties.json 解析 配置文件 C++ VSCode - HarryPotterIsDead! - 博客园 (cnblogs.com)

一键搞定 VSCode 下的 C/C++基本开发环境配置 - 知乎 (zhihu.com)

VS Code上C++的环境配置&tasks.json和launch.json解析 - 知乎 (zhihu.com)​

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

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

相关文章

新版AI系统ChatGPT源码支持GPT-4/支持AI绘画去授权

源码获取方式 搜一搜:万能工具箱合集 点击资源库直接进去获取源码即可 如果没看到就是待更新,会陆续更新上 新版AI系统ChatGPT网站源码支持GPT-4/支持AI绘画/Prompt应用/MJ绘画源码/PCH5端/免授权,支持关联上下文,意间绘画模型…

村级数据下载

简介 我开发了一个网站,是一个提供2010年-2023年的中国行政区划关系的查询网站,github开源地址为:https://github.com/ruiduobao/gaode_MAP_CUN,五级行政区划的上下级关系来源于统计局发布的各个年份对应的统计用区划代码和城乡划…

Android 基础技术——Framework

笔者希望做一个系列,整理 Android 基础技术,本章是关于 Framework 简述 Android 系统启动流程 当按电源键触发开机,首先会从 ROM 中预定义的地方加载引导程序 BootLoader 到 RAM 中,并执行 BootLoader 程序启动 Linux Kernel&…

已解决Application run failed org.springframework.beans.factory.BeanNot

问题原因:SpringBoot的版本与mybiats-puls版本不对应且,spring自带的mybiats与mybiats-puls版本不对应 这里我用的是3.2.2版本的SpringBoot,之前mybiats-puls版本是3.5.3.1有所不同。 问题:版本对不上 解决办法:完整…

NoSQL 数据库管理工具,搭载强大支持:Redis、Memcached、SSDB、LevelDB、RocksDB,为您的数据存储提供无与伦比的灵活性与性能!

NoSQL 数据库管理工具,搭载强大支持:Redis、Memcached、SSDB、LevelDB、RocksDB,为您的数据存储提供无与伦比的灵活性与性能! 【官网地址】:http://www.redisant.cn/nosql 介绍 直观的用户界面 从单一应用程序中同…

计算机视觉基础:【矩阵】矩阵选取子集

OpenCV的基础是处理图像,而图像的基础是矩阵。 因此,如何使用好矩阵是非常关键的。 下面我们通过一个具体的实例来展示如何通过Python和OpenCV对矩阵进行操作,从而更好地实现对图像的处理。 示例 示例:选取矩阵中指定的行和列的…

我为什么不喜欢关电脑?

程序员为什么不喜欢关电脑? 你是否注意到,程序员们似乎从不关电脑?别以为他们是电脑上瘾,实则是有他们自己的原因!让我们一起揭秘背后的原因,看看程序员们真正的“英雄”本色! 一、上大学时。 …

C++:C++入门基础

创作不易,感谢三连 !! 一、什么是C C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机&#xff…

0220作业

C语言实现LED1闪烁 led.h #ifndef __LED_H__ #define __LED_H__//RCC寄存器封装 #define RCC_MP_AHB4_ENSETR (*(volatile unsigned int*)0x50000A28) //寄存器封装//GPIO寄存器封装 typedef struct{volatile unsigned int MODER; //00volatile unsigned int OTYPER; //04vol…

代码随想录算法训练营DAY21 | 二叉树 (9)

一、LeetCode 669 修建二叉搜索树 题目链接:669.修建二叉搜索树https://leetcode.cn/problems/trim-a-binary-search-tree/description/ 思路:递归三部曲-定参数、返回值-定终止条件-定单层递归逻辑 class Solution {public TreeNode trimBST(TreeNode …

Devvortex

目标靶机 攻击机IP地址为10.10.16.2 信息收集 # nmap -sT --min-rate 10000 -p- 10.10.11.242 -oN port.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-21 10:32 CST Warning: 10.10.11.242 giving up on port because retransmission cap hit (10). Nma…

MyBatis Plus:自定义typeHandler类型处理器

目录 引言:关于TypeHandler PostGreSQL:JSON数据类型 PostGreSQL数据库驱动:PGobject类 TypeHandler类型处理器 自定义类型处理器 类型处理器实现:PGJsonTypeHandler 注册类型处理器 引言:关于TypeHandler MyBa…

centos通过VNC连接

1.Centos上安装VNC服务端 yum list|grep vnc yum -y install tightvnc-server 2.windows电脑安装VNC客户端 下载并安装VNC-Viewer-7.9.0-Windows https://download.csdn.net/download/sj349781478/88856711 3.Centos启动VNC服务 #vncserver 4.通过客户端连接VNC服务端

kafka命令行操作

kafka命令行操作: 配置环境变量: export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH export JAVA_PATH${JAVA_HOME}/bin:${JRE_HOME}/bin export PATH…

AI顶流OpenAI又一重磅力作Sora,究竟是什么?一文弄懂Sora:简介|发展历程|主要功能|使用场景|替代软件|AI软件工具推荐!

要说最近一周的头条热搜,非Sora莫属!Sora的诞生,再一次引发了人们对AI人工智能以及AIGC的关注。 对第一次听说Sora的人,可能会好奇,大家都在说的Sora是什么? Sora是什么软件? Sora&#xff0…

XML Map 端口进阶篇——常用关键字和格式化器详解

XML Map 端口是用于在不同XML之间建立关系映射的工具,允许通过拖拽操作实现源XML和目标 XML之间的数据字段映射,除此之外,XML Map 端口还提供了其它丰富多彩的功能,使用户能够更加灵活和高效的处理XML 数据映射任务,让…

解锁创意灵感,探索FlutterExampleApps项目的奥秘

解锁创意灵感,探索FlutterExampleApps项目的奥秘 项目简介 FlutterExampleApps项目是一个包含各种示例应用链接的仓库,旨在演示Flutter应用开发中的各种功能、特性和集成。 项目包含了以下几个部分,每个部分都涵盖了不同的内容和主题&…

使用 Next.js 连接 mysql 数据库

前言 本文主要为大家介绍,如何使用 Next 框架实现一个简单的后端接口,并且从数据库中请求数据返回给前端。 实现 创建api/getData文件夹 项目创建完成后在 app 文件下新建api文件夹,在 api 文件夹下新建 getData 文件夹,在 ge…

L1-047 装睡-java

输入格式: 输入在第一行给出一个正整数N(≤10)。随后N行,每行给出一个人的名字(仅由英文字母组成的、长度不超过3个字符的串)、其呼吸频率和脉搏(均为不超过100的正整数)。 输出格…

实现Slider 滑块组件标记动态变化

实现以上效果&#xff0c;下拉框、slider滑块、按钮都在同一行&#xff0c;设置flex布局后&#xff0c;发现silider滑块最右边的标记数字一直都如下竖着显示&#xff0c;后来通过给源组件的标记区.el-slider__marks-text增加一个宽度后解决该问题。 <template><div>…