更广泛的问题:
这篇文章最初询问了如何指定特定于平台的问题匹配器,但似乎要回答的更重要的问题是:
当“windows”或“linux”部分无法识别这些属性时,如何为任务设置特定于平台的属性?
即使我将这个任务分成两个任务,似乎只能将其中一个设置为两个平台的默认构建任务。
在有人问之前,这个问题源于需要将我的 tasks.json 文件提交到存储库,以便其他开发人员能够使用 VS Code 中的“运行构建任务...”命令在任何平台上构建项目。我意识到他们总是可以在检查代码后更改默认任务。
原始问题:
我在 VSCode 中有一个任务,它运行一个 shell/批处理脚本来构建我的 C++ (CMake) 应用程序。该任务将"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}"
但是为每个与该项目一起工作的工作站进行设置会很烦人。