VSCode任务

VSCode任务,第1张

VSCode任务

VSCode任务
  • 通过任务与外部工具集成
  • 通过测试C/C++来学习任务
    • 测试C
    • 测试C++
  • 总结

通过任务与外部工具集成

有很多工具可以自动执行任务,例如 linting、构建、打包、测试或部署软件系统。示例包括Typescript Compiler、诸如ESLint和TSLint 之类的linter以及诸如Make、Ant、Gulp、Jake、Rake和MSBuild 之类的构建系统。

这些工具大多从命令行运行,并在内部软件开发循环(编辑、编译、测试和调试)内外自动执行作业。鉴于它们在开发生命周期中的重要性,能够在 VS Code 中运行工具并分析它们的结果是有帮助的。VS Code 中的任务可以配置为运行脚本和启动进程,这样许多现有工具就可以在 VS Code 中使用,而无需输入命令行或编写新代码。工作区或文件夹特定的任务是从工作区文件夹.vscode中的tasks.json文件配置的。

通过测试C/C++来学习任务

用vscode打开一个空文件夹,新建测试文件main.c和main.cpp

选择,菜单 > 终端 > 配置任务/配置默认生成任务下拉列表中,列出了 C++ 编译器的各种预定义构建任务。选择 C/C++: g++.exe build active file。若是 C,请选择 C/C++: gcc.exe build active file,C 无法使用 g++.exe,完成后会在 .vscode 文件夹下创建 task.json 文件并打开

注意配置任务是配置本工程(文件夹)的任务生成规则,即定义本工程(文件夹)怎么编译。配置默认生成任务是配置工程(文件夹)默认的任务(有点绕继续往下看),可以看到我的编译器路径为

E:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gcc.exe

也就是说会用该编译器来创建任务,生成main.exe

选择,菜单 > 终端 > 运行生成任务,用该编译器来创建任务,生成main.exe



所以配置默认生成任务是当我们不去修改 task.json 文件,直接运行生成任务时使用的



而当我们直接右键选择Run Code时会发现,使用的编译器是gcc,这是因为vscode自动调用的visual studio,或者wsl(windows下Linux子系统)两者的编译器,如果前两个都没检测到,vscode才会使用mingw等编译器,因为我安装了wsl,所以直接调用了gcc/g++,生成main.exe可执行程序并且直接执行程序

测试C


测试C++


总结

如何证明上述说法,如果我们注释掉 task.json 文件的编译器

运行生成任务会发现无法生成main.exe


而执行Run Code却依旧能编译执行


试验所用代码

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: gcc.exe 生成活动文件",
			"command": "E:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gcc.exe",
			"args": [
				"-fdiagnostics-color=always",
				"-g",
				"${file}",
				"-o",
				"${fileDirname}${filebasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": "build",
			"detail": "编译器: E:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gcc.exe"
		}
	]
}

代码解析:

任务的属性具有以下语义:

  • label:用户界面中使用的任务标签。
  • type : 任务的类型。对于自定义任务,这可以是shell或process。如果shell指定,则命令被解释为 shell 命令(例如:bash、cmd 或 PowerShell)。如果process指定,则命令被解释为要执行的进程。
  • command:要执行的实际命令。
  • windows:任何 Windows 特定的属性。在 Windows *** 作系统上执行命令时,将代替默认属性使用。
  • group:定义任务所属的组。在示例中,它属于test组。属于测试组的任务可以通过从命令面板运行运行测试任务来执行。
  • presentation:定义如何在用户界面中处理任务输出。在此示例中,显示输出的集成终端被always显示,并new在每次任务运行时创建一个终端。
  • options:覆盖cwd(当前工作目录)、env(环境变量)或shell(默认shell)的默认值。选项可以按任务设置,也可以全局设置或按平台设置。此处配置的环境变量只能从您的任务脚本或流程中引用,如果它们是您的参数、命令或其他任务属性的一部分,则不会被解析。
  • runOptions:定义任务运行的时间和方式。

更多请阅读:VSCode任务

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5670491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存