目录

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

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
莲动渔舟8 小时前
国产编辑器EverEdit - 扩展脚本:让EverEdit支持“批量查找”功能
编辑器·emeditor·notepad·everedit
rainFFrain9 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
Liudef0610 小时前
deepseek v3-0324实现SVG 编辑器
开发语言·javascript·编辑器·deepseek
超级小的大杯柠檬水12 小时前
修改Anaconda中Jupyter Notebook默认工作路径的详细图文教程(Win 11)
ide·python·jupyter
云心雨禅14 小时前
Vim操作指令全解析
编辑器·vim·excel
色空大师14 小时前
【idea】实用插件
java·ide·intellij-idea
suanday_sunny15 小时前
VSCode运行,各类操作缓慢,如何清理
ide·vscode·编辑器
信计小白15 小时前
vscode报Module containing this breakpoint has not yet loaded
ide·vscode·编辑器
Kusunoki_D16 小时前
使用 VIM 编辑器对文件进行编辑
linux·编辑器·vim
向宇it16 小时前
【零基础入门unity游戏开发——2D篇】2D 游戏场景地形编辑器——TileMap的使用介绍
开发语言·游戏·unity·c#·编辑器·游戏引擎