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

相关推荐
daad7776 小时前
记录vscode连接matlab启动环境搭建
java·vscode·matlab
我命由我1234516 小时前
Android Studio - Android Studio 自定义预览尺寸
android·java·ide·java-ee·android studio·android-studio·android runtime
小林ixn16 小时前
Node.js 文件系统与路径处理:从 API 到工程化实战
node.js·编辑器·vim
Luoxi_81 天前
Anaconda超详细的安装教程+VScode的使用
ide·vscode·编辑器
球king1 天前
CC GUI 插件:在 IDEA 中使用 CodeX
java·ide·intellij-idea
大龄牛码1 天前
从模型基座到工程范式:GPT-5.6与Grok 4.5在主流AI IDE中的架构适配与选型分析
ide·人工智能·gpt
无糖冰可乐211 天前
安装wsl2,并链接Windows上的vscode运行项目
pytorch·vscode·python·pip
不负信仰1 天前
Visual Studio 三月更新 —— 打造专属自定义 Agent
ide·visual studio
流量猎手1 天前
Vscode登陆服务器
服务器·ide·vscode
HAPPY酷1 天前
【ROS2】16G 内存笔记本跑 ROS2 仿真?VMware 虚拟机“保姆级”配置指南 (R9 7940HX + RTX 4060)
java·linux·ide·windows·pycharm