信创之国产浪潮电脑+统信UOS操作系统体验5:visual studio code的任务配置文件tasks.json进行C++编译的任务配置类型type取值及含义 您所在的位置:网站首页 蛋糕尺寸参照物图片大全大图 信创之国产浪潮电脑+统信UOS操作系统体验5:visual studio code的任务配置文件tasks.json进行C++编译的任务配置类型type取值及含义

信创之国产浪潮电脑+统信UOS操作系统体验5:visual studio code的任务配置文件tasks.json进行C++编译的任务配置类型type取值及含义

2023-12-04 08:18| 来源: 网络整理| 查看: 265

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、vscode简介

Visual Studio Code是一款由微软开发的免费轻量级、快速、易扩展的跨平台代码编辑器。它支持多种编程语言和框架,包括JavaScript、TypeScript、Python、C++等。Visual Studio Code具有智能感知、调试、Git版本控制、插件扩展等丰富的功能,可以用于开发Web应用程序、桌面应用程序、移动应用程序等,也可以作为普通文本编辑器使用。

Visual Studio Code是轻量级的跨平台的同时支持C++和Python的IDE工具。使用Visual Studio Code开发C++程序,需要安装C++相关插件来配置C++的编译环境,安装GCC编译器后,将其路径添加到Visual Studio Code的配置文件中,然后就可以在Visual Studio Code中编写和编译C++程序了。

在《信创之国产浪潮电脑+统信UOS操作系统体验2:安装visual studio code和cmake搭建C++开发环镜》介绍了在国产浪潮电脑+统信UOS操作系统中安装visual studio code和cmake搭建C++开发环镜的过程及案例,大家可以参考。

二、任务配置文件tasks.json简介

vscode是支持通过配置可以实现类似VC等IDE开发工具使用菜单和快捷键直接进行程序编译构建的,这样构建的任务可以结合后续的调试配置进行IDE环境的程序调试,不过在之前必须先通过vscode的编译构建任务配置文件tasks.json进行相关设置。

tasks.json文件是vscode用于进行任务处理的配置文件,支持如下任务配置及其功能:

编译C++代码:可以使用g++编译器编译C++代码,并生成可执行文件运行Python代码:可以使用Python解释器运行Python代码,并输出结果调试Node.js代码:可以使用Node.js调试器调试Node.js代码,并查看变量值、调用栈等信息执行Shell命令:可以执行Shell命令,并输出结果。

在tasks.json配置文件中,可以定义多个任务,每个任务都包含了一些属性,例如任务名称、任务类型、执行命令、命令参数、工作目录、输出等,这些任务还可以指定执行依赖关系。通过配置tasks.json文件,可以方便地在Visual Studio Code中执行这些任务,提高开发效率。

三、进行C++编译的任务配置类型type取值及含义 3.1、tasks.json的例子

按照《信创之国产浪潮电脑+统信UOS操作系统体验2:安装visual studio code和cmake搭建C++开发环镜 https://blog.csdn.net/LaoYuanPython/article/details/133178433)》介绍的安装C++扩展后,就可以进行C++程序的IDE编辑和编译构建,在构建前,请先进行tasks.json文件的配置生成。

下面是一个生成的CPP构建任务的tasks.json的案例:

{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: g++ 生成活动文件", "command": "/usr/bin/g++", "args": [ "-fdiagnostics-color=always", "-g", "*.cpp", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "编译器: /usr/bin/g++" } ] }

tasks.json文件格式及内容请参考互联网的介绍。

3.2、关于任务类型type

从上面例子可以看到,task任务的配置中有个type属性,上面例子中配置的值为cppbuild,即"type": "cppbuild"。

type是配置任务的类型,取值有多种,与安装的扩展有关,如果装了c++扩展,进行C++开发构建使用。经老猿查阅资料和验证,在配置C++编译构建任务时,type有三种取值:cppbuild、shell、process:

cppbuild:表示C++程序编译构建shell:执行shellprocess:运行进程。

如果是一个C++构建任务,三种type取值都可以,真正的构建任务都依赖于“command”和“args”属性的配置,执行的就是command属性设定的命令,该命令带args指定的参数来执行。具体执行都是在vscode的“终端->运行生成任务…”来执行。

那为什么type要设置三种模式呢?这说明它们还是存在一定的区别,下面老猿结合案例来说明三种模式的区别。

1. type设置为cppbuild:表示任务为c++编译构建任务,上面给出的tasks.json就是这么设置的,当执行时,对应终端部分输出信息如下:

在这里插入图片描述 可以看到,终端输出信息中显示了执行任务的名字、执行提示、执行的具体指令,并在执行成功后提示任务生成已成功完成。

如果编译的CPP文件存在语法错误,则会在输出信息中显示相关错误信息,并在最后给出“生成已完成,但出现错误。”的提示(英文版是英语提示)。

2. type设置为shell:表示任务通过shell来执行,其执行输出信息如下: 在这里插入图片描述 可以看到,终端输出信息中没有显示执行任务的名字、也没有提示是生成任务,只提示执行任务以及具体的指令,执行结果也没有展示。

如果编译的CPP文件存在语法错误,则会在输出信息中显示相关错误信息,在最后给出“已终止,退出代码: 1。”的提示(英文版是英语提示)。

3. type设置为process:表示任务通过单独启动一个进程来执行,其执行输出信息如下: 在这里插入图片描述 可以看到前面2种模式能正常编译代码的,这种模式无法编译。

针对这个问题,老猿猜想可能是单独进程运行时取到的当前目录不是工程文件目录,因此加了目录路径,还是报同样的错误,后来将上面配置文件中args的“*.cpp”修改成了两个参数,如下:

"args": [ "-fdiagnostics-color=always", "-g", "hello.cpp", "set.cpp", "-o", "${fileDirname}/${fileBasenameNoExtension}" ]

结果还是报错,找不到这2个cpp文件,直到在这两个cpp文件前加上文件所在目录路径${workspaceFolder}/变成如下:

"args": [ "-fdiagnostics-color=always", "-g", "${workspaceFolder}/hello.cpp", "${workspaceFolder}/set.cpp", "-o", "${fileDirname}/${fileBasenameNoExtension}" ]

执行构建时输出如下信息: 在这里插入图片描述 可以看到此时的执行提示与type为“shell”类似,但是无法用*.cpp作为指令的输入参数,只能用具体的带路径的CPP具体文件名才能作为输入参数。但实际上用gcc或g++时都是支持用*.cpp作为输入文件的。

四、小结

本文介绍了visual studio code的任务配置文件tasks.json的用途、支持的任务类型,进行C++编译的任务配置type参数取值可以是“cppbuild”、“shell”、“process”三种不同值,都能完成编译构建C++项目任务的执行,但是三者还是有所区别,最好的方式无疑是“cppbuild”。

写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

更多关于信创之国产浪潮电脑+统信UOS操作系统体验的内容请参考专栏《国产信创之光》的其他文章。

关于老猿的付费专栏 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python! ☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有