WSL使得获取gcc及其他Linux工具变得非常容易。你可以使用一个脚本快速配置WSL开发环境,如果你搞砸了什么东西,你可以快速销毁它并以最小的代价重新开始。因此,我想在WSL上运行任务而不是在Windows上运行。
例如,在Sublime3中,我可以通过创建以下代码的新构建系统来使用WSL安装的GCC构建C代码:
{
"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 '插入代码'
。有人能提供正确的命令吗?
一些背景信息:
${file}
是一个变量,表示VSCode中活动文件。以下是所有预定义变量的列表。
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}\"'"]
或者按照这个答案的说法
"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
\"
来处理这种情况:"command": "gcc \"$(wslpath '${file}')\" && echo done"
- Evan Rosica"gcc \"$(wslpath '${file}')\" -o a.out &&./a.out
- Evan Rosica