【发布时间】:2018-11-03 22:38:26
【问题描述】:
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
【问题讨论】:
标签: bash visual-studio-code windows-subsystem-for-linux