VsCode简单使用,配置c/c++编译环境,个人感受

news2024/11/25 11:23:51

整体感觉

本质就是一个加强的文本编译器,增加了终端和控制台,可以程序交互,相当于一个IDE的外部框架。和sublime有一定相似性,但界面和插件安装方面远远优于sublime。应该说这是一种为编译语言设计的显示框架,真正起作用的还是安装的编译器或解释器。就像电脑显示屏和电脑主机一样,实际的运行是在主机内部,但显示是在显示屏上。
json的编写可以参考:https://editor.csdn.net/md/?articleId=128247487

简单的安装和使用

安装很简单

但需要注意的是,最好把所有能勾选的都勾选。

修改语言

下面是在汉化该软件,先下载中文插件,然后ctrl+shift+p输入CDL,就会出现这个内容,然后点击选择安装的语言(只是安装语言插件是不能完成软件的语言转换的)。
在这里插入图片描述

使用软件运行程序的难点是环境配置

简单介绍一下vs的按钮功能,最常用的插件安装和编辑文本程序,
在这里插入图片描述

在这里插入图片描述
首先,需要准备好,一,vs code 的软件下载安装完成,二,计算机语言的编译器或解释器安装好,(一般需要配置好环境变量),在cmd环境下可以使用该语言编译文件。
Vs Code中安装的插件是作用:可以就是为了把编译器和vs code联系起来的一个连接器,但这个连接器需要我们做一定修改。一般情况下,

下面以C语言配置为例

参考视频:https://www.bilibili.com/video/BV1ge4y1J72t,这个视频中虽然配置了一部分,主要是编译器和依赖库。但在真正使用vs打开c文件编译运行时还需要配置json文件

新建一个简单的c语言

然后,使用vscode运行之后就会自动在同路径下出现一个.vs的文件夹,然后里面会出现几个json文件,可以参考官方给的配置。下面是几种个人感觉比较好的配置。
下面链接里的写的json不错,但有些是需要根据自己的情况更改的实际配置c/c++时需要配置三个json文件,分别是tasks.json ,launch.json,settings.json。

配置json文件

官方给出的配置方式

先登录vs官网-doc中可以选择各种语言在不同机器环境下的配置指导过程。
在这里插入图片描述

其他地方配置的链接参考

基本来说主要使用的是编译路径部分,和在vs中的配合使用
tasks.json:一般用于构建和运行程序源文件,参考https://www.bilibili.com/read/cv21101000?spm_id_from=333.999.0.0


    "version": "2.0.0",
    "tasks": [
        {//这个大括号里是‘构建(build)’任务
            "label": "build", //任务名称,可以更改,不过不建议改
            "type": "shell", //任务类型,process是vsc把预定义变量和转义解析后直接全部传给command;shell相当于先打开shell再输入命令,所以args还会经过shell再解析一遍
            "command": "gcc", //编译命令,这里是gcc,编译c++的话换成g++
            "args": [    //方括号里是传给gcc命令的一系列参数,用于实现一些功能
                "${file}", //指定要编译的是当前文件
                "-o", //指定输出文件的路径和名称
                "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", //承接上一步的-o,让可执行文件输出到源码文件所在的文件夹下的bin文件夹内,并且让它的名字和源码文件相同
                "-g", //生成和调试有关的信息
                "-Wall", // 开启额外警告
                "-static-libgcc",  // 静态链接libgcc
                "-fexec-charset=GBK", // 生成的程序使用GBK编码,不加这一条会导致Win下输出中文乱码
                "-std=c11", // 语言标准,可根据自己的需要进行修改,写c++要换成c++的语言标准,比如c++11
            ],
            "group": {  //group表示‘组’,我们可以有很多的task,然后把他们放在一个‘组’里
                "kind": "build",//表示这一组任务类型是构建
                "isDefault": true//表示这个任务是当前这组任务中的默认任务
            },
            "presentation": { //执行这个任务时的一些其他设定
                "echo": true,//表示在执行任务时在终端要有输出
                "reveal": "always", //执行任务时是否跳转到终端面板,可以为always,silent,never
                "focus": false, //设为true后可以使执行task时焦点聚集在终端,但对编译来说,设为true没有意义,因为运行的时候才涉及到输入
                "panel": "new" //每次执行这个task时都新建一个终端面板,也可以设置为shared,共用一个面板,不过那样会出现‘任务将被终端重用’的提示,比较烦人
            },
            "problemMatcher": "$gcc" //捕捉编译时编译器在终端里显示的报错信息,将其显示在vscode的‘问题’面板里
        },
        {//这个大括号里是‘运行(run)’任务,一些设置与上面的构建任务性质相同
            "label": "run",
            "type": "shell",
            "dependsOn": "build", //任务依赖,因为要运行必须先构建,所以执行这个任务前必须先执行build任务,
            "command": "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", //执行exe文件,只需要指定这个exe文件在哪里就好
            "group": {
                "kind": "test", //这一组是‘测试’组,将run任务放在test组里方便我们用快捷键执行
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": true, //这个就设置为true了,运行任务后将焦点聚集到终端,方便进行输入
                "panel": "new"
            }
        }

    ] 作者:oops_12138 https://www.bilibili.com/read/cv21101000?spm_id_from=333.999.0.0 出处:bilibili

launch.json:用于debug的设置,参考https://www.bilibili.com/read/cv21101000?spm_id_from=333.999.0.0
官方参考:https://code.visualstudio.com/docs/editor/debugging#_launch-configurations

{
  {
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        {//这个大括号里是我们的‘调试(Debug)’配置
            "name": "Debug", // 配置名称
            "type": "cppdbg", // 配置类型,cppdbg对应cpptools提供的调试功能;可以认为此处只能是cppdbg
            "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
            "program": "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
            "args": [], // 程序调试时传递给程序的命令行参数,这里设为空即可
            "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
            "cwd": "${fileDirname}", // 调试程序时的工作目录,此处为源码文件所在目录
            "environment": [], // 环境变量,这里设为空即可
            "externalConsole": false, // 为true时使用单独的cmd窗口,跳出小黑框;设为false则是用vscode的内置终端,建议用内置终端
            "internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,新手调试用不到
            "MIMode": "gdb", // 指定连接的调试器,gdb是minGW中的调试程序
            "miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe", // 指定调试器所在路径,如果你的minGW装在别的地方,则要改成你自己的路径,注意间隔是\\
            "preLaunchTask": "build" // 调试开始前执行的任务,我们在调试前要编译构建。与tasks.json的label相对应,名字要一样
    }], 
}

settings.json:用户设置,在vscode的右上角有一个三角形,用于runcode时就是使用的这个json文件,参考:https://blog.nowcoder.net/n/5c6e72672e7c4defa521f3c68e39c2c1

{
  //  - onWindowChange: A dirty file is automatically saved when the window loses focus
  // "files.autoSave": "onFocusChange",
  // Controls the font size in pixels.
  "editor.fontSize": 14,
  // The number of spaces a tab is equal to. This setting is overridden based on the file contents when `editor.detectIndentation` is on.
  "editor.tabSize": 4,
  // Configure glob patterns for excluding files and folders. For example, the files explorer decides which files and folders to show or hide based on this setting. Read more about glob patterns [here](#_advanced-search-options).
  "files.exclude": {
    "**/.git": true,
    "**/.svn": true,
    "**/.hg": true,
    "**/CVS": true,
    "**/.DS_Store": true
  },
  "editor.quickSuggestions": {
    "other": true,
    "comments": true,
    "strings": true
  },
  //这是各种语言的运行命令
  "code-runner.executorMap": {
    "javascript": "node",
    "php": "C:\\php\\php.exe",
    "python": "python",
    "perl": "perl",
    "ruby": "C:\\Ruby23-x64\\bin\\ruby.exe",
    "go": "go run",
    "html": "\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\"",
    "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
    "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
    "cpp": "cd $dir && g++ -std=c++11 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
},
"code-runner.runInTerminal": true
}

分析json中几个重要的语句作用

下面这两个一个是tasks.json中的一段,

            "command": "gcc", //编译命令,这里是gcc,编译c++的话换成g++
            "args": [    //方括号里是传给gcc命令的一系列参数,用于实现一些功能
                "${file}", //指定要编译的是当前文件
                "-o", //指定输出文件的路径和名称
                "${fileDirname}\\bin\\${fileBasenameNoExtension}.exe", //承接上一步的-o,让可执行文件输出到源码文件所在的文件夹下的bin文件夹内,并且让它的名字和源码文件相同
                "-g", //生成和调试有关的信息
                "-Wall", // 开启额外警告
                "-static-libgcc",  // 静态链接libgcc
                "-fexec-charset=GBK", // 生成的程序使用GBK编码,不加这一条会导致Win下输出中文乱码
                "-std=c11", // 语言标准,可根据自己的需要进行修改,写c++要换成c++的语言标准,比如c++11
            ],

下面这句就是在编译时执行的语句,实际发现和上面的内容很好对应。

gcc c文件路径 -o 编译后输出的exe文件完整路径 -g -Wall -static-libgcc -fexec-charset=GBK -std=c11

运行程序中的按钮对应的json文件执行

1,终端运行任务

在这里插入图片描述

tasks.json文件中的两个label,
在这里插入图片描述

2,使用软件右上角的三角,执行的run code的json文件就是settings.json的设置内容

在这里插入图片描述

终端需要完全结束再运行,否则会出现错误

在这里插入图片描述
否则会出现下面的两种情况,
1,使用终端运行
在这里插入图片描述
2,点击右上角三角运行
在这里插入图片描述

查看配置的json文件几个重要的设置

tasks.json

一般包含两个,分别用于编译和执行,当然这个名字和个数可以根据自己需要去修改
**“label”: “build”**中
在这里插入图片描述
**“label”: “run”**中
在这里插入图片描述

launch.json中

最后一个也是先处理的label的内容
在这里插入图片描述

settings.json

参考:https://blog.nowcoder.net/n/5c6e72672e7c4defa521f3c68e39c2c1,https://blog.csdn.net/kunkliu/article/details/124092580
官方:https://code.visualstudio.com/docs/getstarted/settings
下面是显示了各种不同的语言执行,需要做对应修改
在这里插入图片描述

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

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

相关文章

代码随想录算法训练营第二十天 二叉树 java : 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

LeetCode 654.最大二叉树 题目讲解 思路 二叉树的根是最大值左子树最大值左边部分构造的最大二叉树右子树最大值是右边部分构造的最大二叉树 AC代码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode ri…

可视化监控告警-grafana

需求背景 根据我们的业务背景,需要监控3个纬度。 Iaas层:即腾讯云的基础设施CVMPaas层:即使用的腾讯云Paas服务,各种中间件Saas层:即我们本身的服务指标监控。 腾讯云监控,可以覆盖1,2场景, …

HarmonyOS/OpenHarmony应用开发-ArkTS的声明式开发范式

基于ArkTS的声明式开发范式的方舟开发框架是一套开发极简、高性能、跨设备应用的UI开发框架,支持开发者高效的构建跨设备应用UI界面。 基础能力 使用基于ArkTS的声明式开发范式的方舟开发框架,采用更接近自然语义的编程方式,让开发者可以直…

「自控原理」2.2 控制系统的复域数学模型

本节引入控制模型的复域模型——传递函数,并介绍其构建和使用方法。 本节介绍了几种常见环节的传递函数 文章目录传递函数的定义传递函数的标准形式首1标准型尾1标准型传递函数的性质传递函数的局限性典型环节的传递函数控制系统的复域数学模型是传递函数。拉普拉斯…

深入浅出java并发编程(Thread)

快速了解 package java.lang;public class Thread implements Runnable {}Thread是lang包下的一个类,实现了Runnable接口。源码如下 FunctionalInterface public interface Runnable {public abstract void run(); }Runnable是一个函数式接口不会抛出异常没有返回…

Minecraft 1.19.2 Fabric模组开发 05.动画效果物品

我们本次在Fabric中实现一个具有动画效果的物品,本次演示的模型代码均在文末给出 效果演示效果演示效果演示 首先,请确保你的开发包中引入了geckolib依赖,相关教程请参考:Minecraft 1.19.2 Fabric模组开发 03.动画生物实体 1.首先我们要使用…

nvidia显卡编码并发session限制破解

对于服务器型显卡(比如:Tesla T4、NVIDIA A100等),nvidia显卡编码并发session路数没有限制,对于消费型显卡(比如:GeForce RTX 3070、GeForce RTX 3080等),nvidia显卡编码并发session…

Odoo 16 企业版手册 - 财务管理之会计仪表板

会计仪表板 财务管理是任何类型业务不可避免的一部分。无论您经营的业务规模或类型如何,如果财务流程没有得到适当的管理和监控,您将在未来面临严重的财务失败。手动管理所有会计操作不是一个好主意,因为它需要大量的时间和精力。在人工会计管…

esp32 Python开发快速入门--环境配置以及点亮LED灯

esp32 Python开发快速入门--环境配置以及点亮LED灯1. 环境配置2. 固件的烧录3 下面开始点灯1. 环境配置 需要配置两个环境, 开发的IDE Thonny 链接如下 https://thonny.org/ 安装串口助手,芯片是通过串口来实现通信的,需要驱动,…

Openresty宏观概述笔记

最近由于项目需要学习了安全代理的相关知识,其实刚开始的时候是非常需要一个入门的介绍,大概说明下这个到底是个什么东西,能干啥,简单的原理是什么,为此我记录下我看完用完的心得,记录成笔记。 一般我们代码…

Nginx基础01:安装和基本使用

背景Nginx是一个高性能的Web服务器,几乎所有的Web服务都需要使用Nginx。关于Nginx的功能特性这里不再赘述,让我们从0开始,了解Nginx的基本用法,学习它在Web服务中都有哪些应用。本文主要介绍Nginx的安装以及基础的控制命令。Nginx…

讨论| 电视行业已是落日夕阳?

如今,随着移动设备、互联网技术的发展,电视似乎逐渐淡出人们的视野。近期,与电视相关的热门讨论似乎都是对于各大视频平台的会员投屏制度,这似乎更加减少了大众对于电视的使用欲望。那么电视领域是否真的趋于淘汰了呢?…

PASCAL VOC 数据集的标注格式

PASCAL VOC 数据集的标注格式 PASCAL VOC 挑战赛 ( **The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛。 PASCAL的全称是Pattern Analysis, Statistical Modelling and Computational Learning,很多优秀的计算机视觉模型…

区块链知识系列 - 系统学习EVM(一)

EVM有一个基于栈的架构,在一个栈中保存了所有内存数值。EVM的数据处理单位被定义为256位的“字”(这主要是为了方便处理哈希运算和椭圆曲线运算操作) 这里所说的内存数值是指那些EVM字节码运行所需要的输入、输出参数数据和智能合约程序运行中…

拉伯证券|锂离子动力电池有哪些优缺点?锂离子电池的优缺点详解

锂离子动力电池是20世纪开发成功的新型高能电池。这种电池的负极是石墨等资料,正极用磷酸铁锂、钴酸锂、钛酸锂等。70年代进入实用化。因其具有能量高、电池电压高、工作温度规模宽、贮存寿命长等优点,已广泛应用于军事和民用小型电器中。 锂离子动力电池…

jvm垃圾回收笔记

JVM基础知识笔记 1. 垃圾回收相关算法 标记清除-标记整理-复制 这三个看上面的文章 1.1 分代收集算法 将不同生命周期的对象采用不同的收集方式,以便提高回收效率,一般是将Java堆分为新生代和老年代,这样可以根据各个年代的特点使用不同的…

拉伯证券|A股涨势趋缓,个股分化,北向资金继续“买买买”

今天上午,A股商场涨势趋缓,主要指数涨跌互现。 个股方面也现较大分解,接连涨停股和接连大幅跌落股同时呈现。 值得注意的是,作为近期最为坚定买入A股的力量之一,北向资金今天上午继续“买买买”,上午半个交…

Wider Face+YOLOV7人脸检测

1 Wider Face标注格式转成YOLO格式1.1 Wider Face标注介绍The format of txt ground truth. File name Number of bounding box x1, y1, w, h, blur, expression, illumination, invalid, occlusion, pose0--Parade/0_Parade_marchingband_1_849.jpg 1 449 330 122 149 0 0 0 0…

Java开发 - Spring Test知多少?

前言 在前文中,我们也使用了测试代码来进行简单的单元测试,但是我们会发现,里面有大量的重复代码,实际给我们的体验并不是太好,所以这篇,我们来学习Spring Test,Spring Test不仅仅限于在Mybati…

AUTOSAR RTE 总结

1. Interface和在Interface下面包含哪些data element在SWC创立之前就定义好了,存储在一个arxml文件里面, 它相当于一个库文件,在新建AUTOSAR project的第一步就应该被导入进来 2. port在SWC创建的阶段被create,因为Interface没有…