当前位置: 首页 > news >正文

vscode 与 C++

具体流程的话,官方文档里都有的:C++ programming with Visual Studio Code

  1. 浏览器下载一个mingw64,解压,配置环境变量
  2. vscode里安装c++相关的插件
  3. 没了

第一步只看文字,可能有点抽象,相关视频:

关于mingw64的下载:【【教程】VScode中配置C语言/C++运行环境】 【精准空降到 01:32】

下载以后环境变量的配置:【安装mingw】 【精准空降到 05:32】

流程大概就是如此,这里主要记录遇到的一些问题。 

文件的解压

mingw64,下载以后,是个7z格式的压缩包,需要解压。(解压前约40MB,解压后约400MB)

windows原生好像解压不了这种格式的,所以这里装了下这个:

7-Zip

假如中间出了错

比如,写的是cpp,但是第一次选编译器的时候误选了gcc而不是g++,就可能会报错。

第一次会弹窗,让选一个编译器

怎么改回来?

官方文档:编译器只有第一次才会弹窗,让手动选编译器,后面就默认照着第一次选的来了。

所以,弹窗选择编译器只存在于首次运行,第一次选错了,它就会把一个错误的值当成默认值,后面也不会再弹窗让选择了,只能将错就错……

这个时候,可以删掉.vscode文件夹。默认的设置就在这个文件夹的tasks.json里,把它删了,默认的就不存在了,再运行就会弹窗提示重新选择编译器了。

和tasks.json相关的配置错误,应该都能这么搞吧。

关于编译器的介绍

mingw64是什么的缩写?简单介绍一下

  • Mingw-w64是一个基于MinGW(Minimalist GNU for Windows)的跨平台开发环境,用于在Windows操作系统上构建和编译GNU软件。它提供了一个完整的GNU环境,包括C、C++、Fortran等语言的编译器、调试器、库文件等。
  • Mingw-w64中的"mingw"表示"Minimalist GNU for Windows",而"w64"则表示它支持64位Windows操作系统。与传统的MinGW相比,Mingw-w64具有更好的兼容性和可移植性,支持更多的Windows API函数,并且可以更好地处理64位代码的编译和调试。
  • Mingw-w64的开发始于2000年,经过多年的发展和改进,已经成为一个稳定且广泛使用的跨平台开发工具。它为开发者提供了一个在Windows上构建和调试GNU软件的环境,使得开发者可以在Windows平台上进行开发,并生成可在多种操作系统上运行的可执行文件。

什么是gnu软件?

  • GNU软件是由自由软件基金会(FSF)开发和维护的一个操作系统,其名称来源于GNU(GNU's Not Unix)的缩写。GNU软件是一种与Unix系统兼容的类Unix操作系统,由一系列软件应用程序、开发人员工具以及一个分配资源并和硬件或内核通信的程序组成。
  • GNU软件包括许多知名的大型软件,如GNU Compiler Collection(GCC)、GNU Debugger(GDB)、GNU Binutils、GNU Hello等。其中,GCC是GNU系统的主要编译器,支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada等。GDB是GNU系统的调试器,可以用于在程序运行时进行调试。GNU Binutils是一组二进制工具,包括ld、as、objcopy等,用于处理二进制文件。
  • GNU软件的一个重要特点是其自由软件许可证,这意味着用户可以自由地获取、使用、修改和分发该软件的源代码。此外,GNU软件还强调用户的自由和权利,包括对软件的支配权和使用权,以及保护用户的隐私和自由。
  • 总之,GNU软件是一个基于Unix开发设计,并与Unix兼容的类Unix操作系统,由自由软件基金会开发和维护。它包括许多重要的软件应用程序和开发工具,并且强调用户的自由和权利。

mingw64,gcc,g++,gdb,有什么关系?

  • mingw64:这是一款可以在Windows操作系统上编译和运行GNU程序的工具,它提供了一个GNU环境,包括GCC(GNU Compiler Collection)编译器、GNU binutils工具、GNU Hello程序等。mingw64可以让你在Windows上编译运行GNU程序,也可以让你的程序调用Windows的API函数。
  • gcc:GNU Compiler Collection(GCC)是一款自由软件,它提供了编译、汇编、链接等程序语言开发所需的各种工具。GCC支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada等。它是一款非常强大的编译器,可以编译各种类型的程序,包括桌面应用程序、服务器程序、嵌入式程序等。
  • g++:GNU g++是GCC编译器的一个C++编译器,它可以将C++源代码编译成可执行程序。g++支持C++语言的各种特性,包括类、模板、异常处理等。它是C++程序员的必备工具之一。
  • gdb:GNU Debugger(GDB)是一款源代码级别的调试器,它支持多种编程语言,包括C、C++、Objective-C、Fortran等。GDB可以让你在程序运行时进行调试,包括设置断点、单步执行、查看变量值等操作。它是程序开发人员调试程序的重要工具之一。

如何理解task.json里的args?

这个args,是从哪里冒出来的? ——结合命令行,就好理解了

命令行与参数

三分钟上手g++编译器_哔哩哔哩_bilibili

这里,命令行的-o参数的值设置的是test 

这个例子,也类似:

MinGW-w64 C/C++编译器下载和安装_mingw64_石凌风SLF的博客-CSDN博客

设置-o参数的值为mainCPPout

参数与json

vscode里,图形界面里点一下run就运行了,没用到命令行。怎么做的?命令行套壳。 比如给ffmpeg套图形界面的壳。

所以,命令行只是被套了个壳,看不见了,并不是不存在了,所以,命令行参数还是要指定的。

在哪里指定?在vscode的json文件里:

{"tasks": [{"type": "cppbuild","label": "C/C++: g++.exe 生成活动文件","command": "D:\\software\\mingw64\\bin\\g++.exe","args": [ // arguments,参数"-fdiagnostics-color=always","-g","${file}","-o",    // 参数名,表示这里是要给-o参数赋值,而不是-g参数或者其他的什么参数"${fileDirname}\\${fileBasenameNoExtension}.exe", // 想要给-o参数赋的具体值],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}],"version": "2.0.0"
}

后记

个人理解,仅供参考

http://www.lryc.cn/news/139550.html

相关文章:

  • 水果flstudio好用吗?中文版FL21最新版本如何下载
  • PHP is_array()函数详解,PHP判断是否为数组
  • 面试题-React(三):什么是JSX?它与常规JavaScript有什么不同?
  • 纯前端实现图片上传七牛云
  • win10+wsl2+Ubuntu20.2+Pycharm+WSL解释器
  • EL与JSTL
  • 【Linux】动态库和静态库
  • R语言:联合多指标的ROC曲线
  • 将一个树形结构的数据平铺成一个一维数组(vue3)
  • OSCS开源安全周报第 56 期:Apache Airflow Spark Provider 任意文件读取漏洞
  • CleanMyMac2024永久版Mac清理工具
  • 软考高级系统架构设计师(一)计算机硬件
  • bat文件中自定义cmd命令;执行完退出命令提示符窗口
  • 深度学习的经典算法的论文、解读和代码实现
  • 开源TTS+gtx1080+cuda11.7+conda+python3.9吊打百度TTS
  • 【私有GPT】CHATGLM-6B部署教程
  • 基于“R语言+遥感“水环境综合评价方法教程
  • To_Heart—题解——P6234 [eJOI2019] T形覆盖
  • [软件工具]精灵标注助手目标检测数据集格式转VOC或者yolo
  • Spring BeanName自动生成原理
  • 论文阅读_图形图像_U-NET
  • 基于热交换算法优化的BP神经网络(预测应用) - 附代码
  • 基于秃鹰算法优化的BP神经网络(预测应用) - 附代码
  • 2.文章复现《热电联产系统在区域综合能源系统中的定容选址研究》(附matlab程序)
  • 如何开启esxi主机的ssh远程连接
  • Android Studio实现解析HTML获取json,解析json图片URL,将URL存到list,进行瀑布流展示
  • Centos7 交叉编译QT5.9.9源码 AArch64架构
  • 爬虫逆向实战(二十)--某99网站登录
  • 【C# 基础精讲】LINQ to Objects查询
  • 【力扣】209. 长度最小的子数组 <滑动窗口>