WSL 使获取 gcc 和其他 Linux 工具变得容易。您可以使用脚本来快速配置 WSL 开发环境,因此如果您搞砸了某些事情,您可以快速销毁它并以最低的成本重新开始。因此,我想在 WSL 上而不是在 Windows 本身上运行任务。

例如,在 Sublime3 中,我可以使用 GCC 的 WSL 安装构建 C 代码,只需使用以下代码创建一个新的构建系统:

{
  "cmd" : ["bash", "-c", "gcc ${file_name} -o ${file_base_name} && ./${file_base_name}"],
  "shell": true,
  "working_dir": "${file_path}",
}

到目前为止,我一直试图弄清楚如何在 VS Code 上复制它,但没有运气。似乎至少有其他人设法获得了这个 working,所以它应该是可能的。

似乎正确的方法是配置一个 tasks.json 文件。相关行似乎是:
"command": "bash.exe",
    "args": ["-c", "'insert code here'"]

似乎这告诉 powershell 运行 bash -c 'insert code here' 。谁能想出正确的命令?

一些背景:
${file} 是一个变量,表示 VSCode 中的事件文件。这是所有 predefined variables 的列表。
wslpath 是 Windows 1803 中的新 bash 命令,它采用 Windows 路径并返回 wsl 路径,例如:
$ wslpath "c:\Users\Evan\Google Drive\Development\Programming Languages\file.c"
/mnt/c/Users/Evan/Google Drive/Development/Programming Languages/file.c

我的尝试:

我尝试编写一个脚本来做到这一点,但遇到了问题。调用 myscript 的 tasks.json 语法应该是这样的(注意我们将文件名传递给脚本,以便脚本可以将其传递给 GCC)。
"args": ["-c", "'myscript.sh \"${file}\"'"]

或者按照这个 answer
"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

最佳答案

它可以在没有脚本的情况下完成:

 "command": "gcc '$(wslpath '${file}')' && ./a.out"
${file} 将在 bash 中解析命令之前解析。

关于bash - VS Code : Running Tasks with WSL/Bash,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50513784/

10-12 17:24