VSCode C++ Tasks.json基本信息介绍

前言

上文介绍了VSCode在Windows环境下如果创建C++项目和编译多个文件项目,但是只是粗略的说明了一下Tasks.json文件。今天对tasks.json进行进一步的了解。

内容

Tasks文件

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: g++.exe 生成活动文件",
			"command": "D:\\mingw\\mingw64\\bin\\g++.exe",
			"args": [
				"-fdiagnostics-color=always",
				"-g",
				"${file}",
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "编译器: D:\\mingw\\mingw64\\bin\\g++.exe"
		}
	]
}
  • "version": 版本
  • "tasks":任务列表
  • "type":任务类型 (cppbulid表示这个任务是关于C++项目构建的)
  • "label":任务名称
  • "command":指令(这里的值一般是编译器的路径)
  • "args": 指令的参数
  • "options":用来指定与任务执行相关的选项
  • "problemMatcher":是一个预定义的模式名称或一个自定义的 JSON 对象,用于描述如何从命令行输出中提取问题信息
  • "group":用于将任务分组到构建和测试的上下文中
  • "detail":任务描述

下面对几个重要的属性进一步解释;

tasks属性

tasks在json中是一个数组。数组中的每一个json对象都表示一个任务;比如创建一个构建项目和一个测试项目:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "debug build",
            "command": "g++ -g -o debug_build ${file}",
            "type": "shell",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"]
        },
        {
            "label": "release build",
            "command": "g++ -o release_build ${file}",
            "type": "shell",
            "group": {
                "kind": "build",
                "isDefault": false
            },
            "problemMatcher": ["$gcc"]
        }
    ]
}

command属性

command属性指定了要执行的命令。这是任务定义中最基本的部分之一,它告诉 VSCode 要运行什么程序或脚本。

从上面的两段json中可以看到,command可以直接输入编译命令,也可以指定编译器地址,具体编译命令由args属性给出;

同时command属性可以使用变量(vscode中,变量以${varname}的形式存在)、系统环境变量,如果有多命令的需要,还可以执行脚本(liunx的.sh文件和windows的.bat文件);

args属性

用于定义传递给命令的参数。这个属性是一个数组,可以包含一个或多个字符串,每个字符串代表一个命令行参数。args 属性非常有用,因为它允许你通过任务配置来动态地改变命令的行为。

当command属性的值是执行一个脚本时,args可以为脚本传参:

脚本:

@echo off
echo Running with arguments %1, %2, %3
pause

tasks.json文件

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "run script",
            "command": "${workspaceFolder}/run.bat",
            "args": ["arg1", "arg2", "arg3"],
            "type": "shell",
            "group": {
                "kind": "test",
                "isDefault": true
            }
        }
    ]
}

options属性

  • env: 一个对象,用于设置环境变量。例如,你可以设置 {"NODE_ENV": "development"} 来为你的任务设置一个开发环境。

  • cwd: 指定任务执行时的工作目录。这有助于当你的任务需要在一个特定的目录下运行时指定该目录。

  • shell: 如果设置为 true,则在 shell 环境中执行命令(对于 Windows 可能是 cmd.exe 或 PowerShell)。这对于使用 shell 特性如管道或 shell 扩展等是有用的。

  • windows: 对于 Windows 平台上的特定选项。它可以包含像 shell 这样的选项,或者任何其他针对 Windows 的特殊配置。

  • osx: 对于 macOS 平台上的特定选项。

  • linux: 对于 Linux 平台上的特定选项。

group属性

在group属性中有两个子属性,分别是"kind"和"isDefault"。

kind:接受两个值:"build"和"test"。分别表示"这是一个构建任务"和"这是一个测试任务";

isDefault:其值为布尔型,表示某个任务是否应作为其所属组的默认任务;在多个任务场景中,该属性可以最常用的任务为首选项。该属性的值为true,则默认生成,为false,则需要手动选择生成任务;

具体操作:在VSCode界面右上角点击终端,在出现的菜单栏中有两个选项,分别是"运行生成任务"和"运行任务",这两个选项不同点在:前者生成默认任务,后者需要用户选择具体运行哪个任务;如图:

相关推荐
我命由我123453 小时前
2.使用 VSCode 过程中的英语积累 - Edit 菜单(每一次重点积累 5 个单词)
前端·javascript·ide·vscode·学习·编辑器·学习方法
疑惑的杰瑞9 小时前
[乱码]确保命令行窗口与主流集成开发环境(IDE)统一采用UTF-8编码,以规避乱码问题
java·c++·vscode·python·eclipse·sublime text·visual studio
Eiceblue10 小时前
Python 实现Excel XLS和XLSX格式相互转换
vscode·python·pycharm·excel
文 丰10 小时前
【Android Studio】app:compileDebugJavaWithJavac FAILED解决办法
android·ide·android studio
文 丰11 小时前
【Android Studio】2024.1.1最新版本AS调试老项目(老版AS项目文件、旧gradle)导入其他人的项目
android·ide·android studio
洗发水很好用11 小时前
新版IDEA提示@Autowired不建议字段注入
java·ide·intellij-idea
白总Server12 小时前
php语言基本语法
开发语言·ide·后端·golang·rust·github·php
wavemenu12 小时前
在 Python 中使用 JSON
编辑器
△曉風殘月〆16 小时前
Visual Studio 2019/2022 IntelliCode(AI辅助IntelliSense)功能介绍
ide·visual studio·intellicode
guigui_hello17 小时前
VScode的简单使用
c++·ide·vscode·编辑器