此帖子最初询问如何指定特定于平台的问题匹配器,但似乎需要回答的更重要的问题是:
在“ 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}"
这样的环境变量,但是为与此项目兼容的每个工作站都设置它会很烦人。
答案 0 :(得分:0)
事实证明,您可以使用一系列问题匹配器!
{
"label": "Build",
"windows": { "command": "${workspaceFolder}/Build-Win-x64.bat" },
"linux": { "command": "${workspaceFolder}/Build-Linux-x64.sh" },
"problemMatcher": ["$msCompile", "$gcc"]
}
由于此解决方案使我可以在Windows和Linux上使用相同的任务,因此无需为每个平台定义单独的默认构建任务。
只是出于好奇,是否可以为每个平台设置不同的默认构建任务?