我的 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/