VSCode-一个任务可以调用另一个任务吗?

Tre*_*ery 2 visual-studio-code

Vscode版本:1.19.3

我在想,如果有一个任务调用另一个,像“preLaunchtask”,但对普通任务的方式。

原因是因为当我想调试代码时,我需要将可执行文件重新编译为最新版本,因此我需要先调用“ makemake”来使我的可执行文件成为“ preLaunchTask”调用CMakeTask。

Ali*_*aca 16

你可以让它依赖于另一个任务。例子:

    {
        "label": "secondTask",
        "type": "shell",
        "command": "<Your second task's command here>",
        "dependsOn": [
            "firstTask"
        ]
    },
    {
        "label": "firstTask",
        "type": "shell",
        "command": "<Your first task's command here>"
    }
Run Code Online (Sandbox Code Playgroud)

  • 这(或巴德尔·埃尔默斯的)应该是公认的答案。自从你提供了一个例子以来,我很喜欢你的。“dependsOn” 的一个很酷的事情是您可以指定任务列表。更酷的是,您还可以使用“dependsOrder”来定义它们是按顺序执行还是并行执行。这对于 C/C++ 程序员来说非常有用,因为您可以定义一个“构建”任务、一个“清理”任务,然后您可以创建一个“重建”任务并只说它取决于“清理”和“构建”任务。 (3认同)

Bad*_*ers 6

链接任务是可能的。在任务部署中使用“ dependsOn”:['Build']。 资源


Pal*_*cil 2

全面的

是的,您可以自动调用其他语言的自定义脚本,但还不能调用 C 语言。从任务文档中,

VS Code 目前自动检测以下系统的任务:Gulp、Grunt、Jake 和 npm。我们正在与相应的扩展作者合作,添加对 Maven 和 C# dotnet 命令的支持。如果您使用 Node.js 作为运行时开发 JavaScript 应用程序,您通常会有一个 package.json 文件来描述您的依赖项和要运行的脚本。

对于C(或其他自定义)

您需要在构建任务组中定义一个自定义任务,以便它在那里运行。

并非所有任务或脚本都可以在您的工作区中自动检测。有时需要定义自己的自定义任务。假设您有一个脚本来运行测试,因为有必要正确设置一些环境。该脚本存储在工作区内的脚本文件夹中,对于 Linux 和 macOS 命名为 test.sh,对于 Windows 命名为 test.cmd。从全局任务菜单运行配置任务。这将打开以下选择器。

只要您的系统能够识别要使用的二进制文件,您就可以创建完全任意的命令,并且它可以是按顺序调用构建步骤的 powershell、bash、批处理等脚本。这可以是列出其他命令的命令,或者您可以简单地将多个任意任务添加到此构建组。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Run tests",
            "type": "shell",
            "command": "./scripts/test.sh",
            "windows": {
                "command": ".\\scripts\\test.cmd"
            },
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "reveal": "always",
                "panel": "new"
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

作为默认构建任务,它在触发运行构建任务 (Ctrl+Shift+B) 时直接执行。

任务属性说明:

  • label:用户界面中使用的任务标签。
  • type:任务的类型。对于自定义任务,这可以是 shell 或进程。如果指定了 shell,则该命令将被解释为 shell 命令(例如:bash、cmd 或 PowerShell)。如果指定了进程,则该命令将被解释为要执行的进程。如果使用 shell,命令的任何参数都应嵌入到命令属性中以支持正确的参数引用。例如,如果测试脚本接受 --debug 参数,则命令属性将为:./scripts/test.sh --debug。
  • command:实际执行的命令。
  • windows:任何 Windows 特定属性。在 Windows 操作系统上执行该命令时,将使用它代替默认属性。
  • group:定义任务属于哪个组。在示例中,它属于测试组。属于测试组的任务可以通过从命令面板运行运行测试任务来执行。
  • presentation:定义如何在用户界面中处理任务输出。在此示例中,显示输出的集成终端始终显示,并且在每次任务运行时都会创建一个新终端。