WSL позволяет легко получить gcc и другие инструменты Linux.Вы можете использовать скрипт для быстрой настройки среды разработки WSL, поэтому, если вы что-то напутаете, вы можете быстро уничтожить это и начать все заново с минимальными затратами.Поэтому я хотел бы запускать задачи на WSL, а не на самой Windows.
Например, в Sublime3 я могу собрать код C, используя WSL-установку GCC, просто создав новую систему сборки со следующим кодом:
{
"cmd" : ["bash", "-c", "gcc ${file_name} -o ${file_base_name} && ./${file_base_name}"],
"shell": true,
"working_dir": "${file_path}",
}
Я пытался выяснить,как повторить это на VS Code безуспешно.Кажется, что как минимум еще одному человеку удалось заставить это работать , поэтому это должно быть возможно.
Кажется, что правильным способом является настройка файла tasks.json
.Соответствующие строки выглядят так:
"command": "bash.exe",
"args": ["-c", "'insert code here'"]
Похоже, что это говорит PowerShell для запуска bash -c 'insert code here'
.Может кто-нибудь придумать правильную команду?
Немного предыстории:
${file}
- это переменная, представляющая активный файл в VSCode.Вот список всех предопределенных переменных .
wslpath
- это новая команда bash, поставляемая в Windows 1803, которая принимает путь Windows и возвращает путь wsl, например:
$ wslpath "c:\Users\Evan\Google Drive\Development\Programming Languages\file.c"
/mnt/c/Users/Evan/Google Drive/Development/Programming Languages/file.c
Мои попытки:
Я пытался написать скрипт для этого, но столкнулся с проблемами.Синтаксис tasks.json для вызова myscript
должен выглядеть примерно так (обратите внимание, что мы передаем имя файла скрипту, чтобы скрипт мог передать его в GCC).
"args": ["-c", "'myscript.sh \"${file}\"'"]
или согласно этому ответ
"command": "/path/to/script.sh"
"args": ["\"${file}\""]
myscript
может выглядеть примерно так:
#!/bin/bash
echo "File Path is here $1"
x=$(wslpath "$1")
gcc "$x" -o a.out
./a.out
VS Code Docs