Visual Studio Code:使用多个任务运行preLaunchTask

35

我正在尝试弄清楚如何在launch.json文件的prelaunchtask中同时运行多个任务。

我的tasks.json代码如下:

    "version": "2.0.0",
"tasks": [
    {
        "label": "CleanUp_Client",
        "type": "shell",
        "command": "rm",
        "args": [
            "-f",
            "Client"
        ],
    },
    {
        "label": "Client_Build",
        "type": "shell",
        "command": "g++",
        "args": [
            "-g",
            "client.cpp",
            "-o",
            "Client",
            "-lssl",
            "-lcrypto"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "problemMatcher": "$gcc"
    }
]

在 launch.json 中的 preLaunchTask 参数中,如果我只放置构建任务,它会正常工作,但是我想运行多个任务,在这种情况下是清理客户端和客户端构建。

我尝试添加另一个 preLaunchTask - 但看起来您只能使用该参数一次,因此我尝试了以下内容:

"preLaunchTask": "build" + "clean", "preLaunchTask": "build"; "clean", "preLaunchTask": "build" & "clean", "preLaunchTask": "build" && "clean",

所有尝试都没有成功,语法不正确。

另外,关于第二部分,我想知道“group”部分如何工作,以及“isDefault”: true 的含义。

供参考:https://code.visualstudio.com/docs/editor/tasks

2个回答

49

以下是可行的解决方案。基本上,您需要创建另一个任务,并在其中使用 dependsOn 关键字包含所有要在 preLaunchTask 上运行的其他任务。

参考代码:

    "tasks": [
    {
        "label": "CleanUp_Client",
        "type": "shell",
        "command": "rm",
        "args": [
            "-f",
            "Client"
        ]
    },
    {
        "label": "Client_Build",
        "type": "shell",
        "command": "g++",
        "args": [
            "-g",
            "client.cpp",
            "-o",
            "Client",
            "-lssl",
            "-lcrypto"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "problemMatcher": "$gcc"
    },
    {
        "label": "Build",
        "dependsOn": [
            "CleanUp_Client",
            "Client_Build"
        ]
    }
]

在这种情况下,您可以将preLaunchTask设置为“Build”,它将运行两个任务。
我想知道是否有其他人知道仅从launch.json的preLaunchTask运行多个任务的替代方法或正确语法。

2
这个对你还有用吗? 我按照这种方式配置了我的设置,但是vscode调试器却一直挂起。 - ponytailPalm
在 Code 1.39.2 中,我能够链接多个任务,只要它们不是 build 类型的。如果将所有 build 任务包含在列表中,则所有 build 任务都会失败。这看起来像是 Visual Studio Code 的一个 bug。 - AlainD

5

我同意@Revx0r的答案,但是有一个重要的提示:如果你想按顺序运行最后一个任务,你需要添加dependsOrder字段:

{
    "label": "Build",
    "dependsOrder": "sequence",
    "dependsOn": [
        "CleanUp_Client",
        "Client_Build"
    ]
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接