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

news2024/12/24 22:09:53

前言:上一篇文章写了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.coloradmin.cn/o/1460600.html

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

相关文章

77、Spring、Spring Boot和Spring Cloud的关系

77、Spring、Spring Boot和Spring Cloud的关系 随着 Spring、Spring Boot 和 Spring Cloud 的不断发展,越来越多的开发者加入 Spring 的大军中。对于初学者而言,可能不太了解 Spring、Spring Boot 和 Spring Cloud 这些概念以及它们之间的关系&#xff…

强化学习入门(Matlab2021b)-创建环境【2】

目录 1 前言2 利用step和reset函数创建自定义环境2.1 对象描述2.2 reset函数2.3 step函数2.3 构建自定义环境3 使用匿名函数传递额外的参数4 可视化检查自定义函数的输出参考链接1 前言 本文介绍如何基于MATLAB编写step、reset函数,创建自己的强化学习环境(Environment)。 使…

ThreadLocal(5):ThreadLocalMap源码分析

在分析ThreadLocal方法的时候,我们了解到ThreadLocal的操作实际上是围绕ThreadLocalMap展开的。ThreadLocalMap的源码相对比较复杂, 我们从以下三个方面进行讨论。 1 基本结构 ​ ThreadLocalMap是ThreadLocal的内部类,没有实现Map接口,用独…

Vue2路由组件练习

Vue2路由组件练习 1. 演示效果 2. 代码分析 2.1. 安装 vue-router 命令:npm i vue-router 应用插件:Vue.use(VueRouter) 2.2. 创建路由文件 在 src 文件夹下,创建router文件夹,并在该文件夹创建index.js文件 2.3. 导入依赖…

SpringBootWeb学习笔记——12万字详细总结!

0. 写在前面 注:这套笔记是根据黑马程序员B站2023-3-21的视频学习的成果,其中省略了前端基础部分、Maven部分和数据库基础部分,详情可见目录。 注注:目前文章内结尾处多幅图片加载不出来,因为图片还存在本地没被传上来,过段时间再改~ 所有的Spring项目都基于Spring Fra…

linux 修改开发板网卡eth0的ip地址

win10如何新增电脑ip地址: https://blog.csdn.net/linxinfa/article/details/105817473 ifconfig # 可设置网络设备的状态,或是显示目前的设置。 命令详解:https://www.runoob.com/linux/linux-comm-ifconfig.html 一、临时修改 ifconfig e…

「Qt Widget中文示例指南」如何实现文档查看器?(一)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 文档查看器是一个显…

基于springboot+vue的洗衣店订单管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

【水处理】水环境治理综合服务,污水一体化管控平台

水是人类生活中不可或缺的资源之一。然而,随着人口的增长和工业化的进程,水资源的压力日益增大。由于污染和过度开采,全球许多地区面临水资源短缺的问题。因此,水处理成为了一个至关重要的问题,旨在净化和保护重要的水…

【Python笔记-设计模式】适配器模式

一、说明 适配器模式是一种结构型模式,它使接口不兼容的对象能够相互合作 (一) 解决问题 主要解决接口不兼容问题 (二) 使用场景 当系统需要使用现有的类,但类的接口不符合需求时当需要一个统一的输出接口,但输入类型不可预知时当需要创…

Nginx 反向代理配置

Nginx就不废话了,web服务器。 最近在备案一个域名,想要备案,部署一个服务器,平常很少自己配置Nginx,今天记录下。 1、反向代理 正向代理 指 客户端通过代理访问后端服务 反向代理 指 服务器推出一个客户&#xff0…

最优二叉搜索树 C#实现

最优二叉搜索树 C#实现 介绍一下 上一篇博文搞半天挺烧脑,没搞清楚继续… 主要是练习动态规划算法。最关键的一个是这个最优二叉搜索树能干啥。我认为如果数据稳定,统计出概率来,用最优二叉树保存,以后搜索应该是效率比较高的。…

五种多目标优化算法(MOJS、MOGWO、NSWOA、MOPSO、NSGA2)性能对比,包含6种评价指标,9个测试函数(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MOJS 1.2MOGWO 1.3NSWOA 1.4MOPSO 1.5NSGA2 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数(zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3)&#xff0…

计算机设计大赛 深度学习人脸表情识别算法 - opencv python 机器视觉

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习人脸表情识别系…

隐匿的炸弹 — C语言的隐式声明

前言 (1)如果有嵌入式企业需要招聘湖南区域日常实习生,任何区域的暑假Linux驱动实习岗位,可C站直接私聊,或者邮件:zhangyixu02gmail.com,此消息至2025年1月1日前均有效 (2&#xff0…

comsol燃料电池+锂离子电池

电化学仿真技术通过对电池微观行为进行研究,明晰电池内部多现象机理,并将其数值化,通过数值法实现对物理特征联合计算,建立完整的电池模型。COMSOL Multiphysics 具有强大的多物理场全耦合仿真分析功能、高效的计算性能&#xff0…

WebRTC最新版报错解决:FileNotFoundError: LASTCHANGE.committime (二十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

IP地址定位可以精确到哪里

IP地址定位能够精确到的位置级别取决于多种因素,包括IP地址的分配方式、数据库的质量和更新频率、用户的移动性等。一般而言,IP地址定位可以精确到市级,甚至可以达到街道级别 https://www.ip66.net/?utm-sourceLJ&utm-keyword?1146 但需…

【算法2-1】前缀和、差分与离散化

一、【P3406】海底高铁(差分贪心)​​​​​​ 由于本题涉及到线路问题,需要统计Uim途径每条线路的次数,而且Uim每次的轨迹都是很长一段路径,所以需要使用一个合理的数据结构来维护区间的变化,首先想到线段…

ncnn之三(补充):window环境下vs2022安装ncnn+protobuf

启动VS2022 下面的 x64 Native Tools Command Prompt for VS2022 protobuf git clone gitgithub.com:protocolbuffers/protobuf.git# 或者 下载 https://github.com/google/protobuf/archive/v3.11.2.zip cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPERelease -D…