Я могу воспроизвести ту же проблему с vscode 1.31.1 (настройка пользователя) и WSL, поставляемым с Microsoft Windows 10.0.17134.619 (под управлением Ubuntu 18.04).
Когда оболочка по умолчанию в vscode настроена наWSL Bash, следующий файл tasks.json завершится с ошибкой, о которой сообщалось выше:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Build hello world",
"type": "shell",
"command": "g++",
"args": [
"-g", "helloworld.cpp"
],
"group": {
"kind": "build",
"isDefault": true,
}
}
]
}
Указанный выше файл tasks.json предлагается в последней документации vscode (см. https://code.visualstudio.com/docs/languages/cpp), нона самом деле не работает. По какой-то причине похоже, что последняя команда, введенная vscode для терминала, неверна. Это должно выглядеть как "bash -c g ++ ...". Было бы действительно полезно, если бы эта команда могла бытьповторил где-то, чтобы ошибка была очевидна.
Проблема решена, если оболочка по умолчанию настроена на сохранение командной строки Windows, а файл tasks.json изменен, чтобы получить полный контроль над способом сборки терминала.Команда формируется через поле «options» следующим образом:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Build hello world",
"type": "shell",
"command": "",
"args": [
"g++", "-g", "helloworld.cpp"
],
"problemMatcher":"$gcc",
"group": {
"kind": "build",
"isDefault": true,
},
"options": {
"shell": {
"executable": "C:\\WINDOWS\\System3\\bash.exe",
"args":["-c"]
}
}
}
]
}
В приведенном выше рабочем файле tasks.json используется options, описанные в https://code.visualstudio.com/docs/editor/tasks. Обратите внимание, что я добавил опцию «problemMatcher».Это не имеет никакого отношения к проблеме, описанной здесь, но становится удобным для анализа вывода gcc и обнаружения ошибок в исходном коде.
Итак, в вашем случае вам необходимо:
Установите для терминала по умолчанию vscode значение Командная строка
Добавьте в файл tasks.json параметр:
"options": {
"shell": {
"executable": "C:\\WINDOWS\\System3\\bash.exe",
"args":["-c"]
}
В сочетании с вашим исходным файлом tasks.json приведенное выше должно привести к тому, что в рабочей папке WSL будет правильно сформирована команда make.