build - 如何在 vscode 工作区文件夹之间共享任务?

标签 build visual-studio-code dependencies task chain

我的 VSCode 项目是多根工作区。也就是说,我有多个工作区,每个工作区位于不同的目录中,每个都有一个 .vscode 文件夹。

我正在尝试通过构建任务构建一个在每个模块之间具有依赖关系的工作区。

我尝试为任务设置 dependsOn 参数,但会产生以下错误:
Couldn't resolve dependent task 'build FOO' in workspace folder 'BAR'(这里 BAR 构建任务取决于 FOO)

有没有更好/正确/任何方式来实现我的目标?

最佳答案

你可以有一个tasks您的 .code-workspace 中的部分文件。在那里你可以创建一个像“Build all”这样的任务并定义dependsOn。任务。但是,您也不能从工作区文件夹中引用构建任务(对我来说,这听起来像是一个合理的功能,我相信他们应该在某个时候实现它)。
我的解决方法是将子任务文件中的相关构建任务复制到 .code-workspace文件并在我的“全部构建”任务中引用它们。

示例 .code-workspace :

{
    "folders": [
        {
            "path": "proj-A"
        },
        {
            "path": "proj-B"
        }
    ],
    "tasks": {
        "version": "2.0.0",
        "tasks": [
            {
                "type": "shell",
                "label": "Build A",
                "command": "make",
                "args": ["-j4"],
                "options": {
                    "cwd": "${workspaceFolder}/../proj-A",
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": "build",
            },
            {
                "type": "shell",
                "label": "Build B",
                "command": "make",
                "args": ["-j4"],
                "options": {
                    "cwd": "${workspaceFolder}/../proj-B",
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": "build",
            },
            {
                "type": "shell",
                "label": "Build all",
                "command": "echo",
                "args": ["Building everything"],
                "options": {},
                "problemMatcher": [
                    "$gcc"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "dependsOrder":"sequence",
                "dependsOn": ["Build A", "Build B"]
            },
        ]
    }
}

注意 cwd单个构建任务中的选项。 ${workspaceFolder}似乎设置为 "folders" 中的第一条路径部分。你也可以设置cwd到绝对路径。

这有点 hacky 并且必须复制构建任务的事实并不漂亮,但它现在可以工作,一旦可以引用子任务文件的任务,它就可以很容易地适应。

关于build - 如何在 vscode 工作区文件夹之间共享任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51600546/

相关文章:

.net - 将程序集部署到 bin 文件夹而不添加对项目的引用

Android 4 ICS 构建源代码 - 最低系统要求

visual-studio-code - 我可以在打开文件夹时自动启动任务吗?

python - 如何在 Visual Studio 代码中避免这种烦人的自动完成

ubuntu - 启动 VSCode 后无法使用终端

iphone - Apple Mach-O Linker错误Xcode

node.js - Heroku 应用程序因缺少 'request-promise' 模块而崩溃

java - Android:2 个具有相同包的 aar 库

java - 了解第三方库的测试和编译依赖关系

visual-studio-2013 - F# 项目需要花费大量时间来构建