在VS Code中设置特定于平台的默认任务

时间:2019-05-17 15:13:38

标签: cmake visual-studio-code cross-platform

更广泛的问题:

此帖子最初询问如何指定特定于平台的问题匹配器,但似乎需要回答的更重要的问题是:

在“ Windows”或“ Linux”部分中未识别出任务时,如何为平台设置特定于任务的属性?

即使我将此任务分解为两个任务,似乎也只能将其中一个设置为两个平台的默认构建任务。

在有人问之前,此问题源于需要将我的task.json文件提交到存储库,以便其他开发人员能够使用“运行构建任务...”在任何平台上构建项目。 VS Code中的命令。我意识到他们总是可以在签出代码后更改默认任务。

原始问题:

我在VSCode中有一个任务,该任务运行用于构建C ++(CMake)应用程序的shell /批处理脚本。该任务将"windows""linux"键用于特定于平台的命令。

{
  "label": "Build x64",
  "type": "shell",
  "windows": { "command": "${workspaceRoot}/Build-Win-x64.bat" },
  "linux": { "command": "${workspaceRoot}/Build-Linux-x64.sh" },
  "group": { "kind": "build", "isDefault": true }
}

Windows脚本使用MSVC编译器构建,该编译器需要在任务中放入"problemMatcher": "$msCompile",以便VSCode可以解析编译器输出。

但是Linux脚本使用的GCC需要"problemMatcher": "$gcc"

这些值似乎是互斥的,VSCode不允许它们包含在特定于平台的属性中。

是否可以为每个平台设置具有不同问题匹配器的默认构建任务?

我已经考虑过使用像"problemMatcher": "${env:VSCODE_CPP_MATCHER}"这样的环境变量,但是为与此项目兼容的每个工作站都设置它会很烦人。

1 个答案:

答案 0 :(得分:0)

事实证明,您可以使用一系列问题匹配器!

{
    "label": "Build",
    "windows": { "command": "${workspaceFolder}/Build-Win-x64.bat" },
    "linux": { "command": "${workspaceFolder}/Build-Linux-x64.sh" },
    "problemMatcher": ["$msCompile", "$gcc"]
}

由于此解决方案使我可以在Windows和Linux上使用相同的任务,因此无需为每个平台定义单独的默认构建任务。

只是出于好奇,是否可以为每个平台设置不同的默认构建任务?