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

相关推荐
小狮子安度因1 小时前
PyQt的安装和再PyCharm中的配置
ide·pycharm·pyqt
VernonJsn3 小时前
visual studio 2005的MFC各种线程函数之间的调用关系
ide·mfc·visual studio
戎梓漩3 小时前
windows下安装curl,并集成到visual studio
ide·windows·visual studio
nbsaas-boot5 小时前
如何利用ChatGPT加速开发与学习:以BPMN编辑器为例
学习·chatgpt·编辑器
一棵开花的树,枝芽无限靠近你6 小时前
【PPTist】添加PPT模版
前端·学习·编辑器·html
热爱生活的五柒7 小时前
vscode利用ofExtensions插件可以调试单进程Openfoam,但是不能调试mpi多进程案例
ide·vscode·编辑器
小陈phd7 小时前
Vscode LinuxC++环境配置
linux·c++·vscode
界面开发小八哥7 小时前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
小江村儿的文杰16 小时前
XCode Build时遇到 .entitlements could not be opened 的问题
ide·macos·ue4·xcode
为什么每天的风都这么大17 小时前
Vscode/Code-server无网环境安装通义灵码
ide·vscode·阿里云·编辑器·ai编程·code-server