Настройка специфичных для платформы задач по умолчанию в VS Code - PullRequest
0 голосов
/ 17 мая 2019

Более широкий вопрос:

В этом посте изначально задавался вопрос о том, как указать платформенное средство сопоставления проблем, но, похоже, более важный вопрос, на который нужно ответить:

Как настроить свойства платформы для задач, если эти свойства не распознаются в разделах "windows" или "linux"?

Даже если я разбью эту задачу на две задачи, кажется, что только одна из них может быть установлена ​​в качестве задачи сборки по умолчанию для обеих платформ.

Прежде чем кто-либо спросит, эта проблема связана с необходимостью зафиксировать мой файл tasks.json в репозитории, чтобы другие разработчики могли собрать проект на любой платформе с помощью «Выполнить задачу сборки ...» Команда в VS Code. Я понимаю, что они всегда могут изменить задание по умолчанию после проверки кода.

Оригинальный вопрос:

У меня есть задача в VSCode, которая запускает скрипт shell / batch для сборки моего приложения на 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}", но это было бы неудобно для установки на каждую рабочую станцию, которая работает с этим проектом.

1 Ответ

0 голосов
/ 17 мая 2019

Оказывается, что вы можете использовать массив сопоставителей проблем!

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

Поскольку это решение позволяет мне использовать одну и ту же задачу для Windows и Linux, мне не нужно определять отдельные задачи сборки по умолчаниюдля каждой платформы.

Просто из любопытства, можно ли установить разные задачи сборки по умолчанию для каждой платформы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...