使用来自 Sublime Text 的 Windows 子系统用于 Linux (WSL)

Using Windows Subsystem for Linux (WSL) from Sublime Text

我想使用 Sublime 中的 gccg++make 来将 c 和 c++ 代码编译为 Linux 运行nables窗口。我不能从 Sublime 运行 bash.exe,就像 Whosebug 上的许多其他用户一样。

  1. 您必须将 C:\Windows\System32\bash.exe 文件复制到 C:\Windows\SysWOW64\ 目录。 需要,因为 WoW64 file system redirection (Thanks !)

  2. 然后你必须使用以下代码在 Sublime Text 中创建一个新的构建系统。 (Tools -> Build System -> New Build System...)

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

    此代码将编译 .c 代码而不是 运行。输出将显示在 Sublime 的构建结果面板中。

  3. 当你想使用这个构建系统时,select它在Tools -> Build System列表中,然后点击Ctrl + B

你可以自定义我放在那里的命令,主要是你可以 运行 Linux 命令使用 bash -c "CommandsYouWantToRun"

在 WSL 2 上,建议的解决方案不起作用。这是在 Windows 上的 WSL 2 目标上执行在 Sublime Text 中编辑的脚本的解决方案。创建一个 bash-wsl.sublime-build 文件:

{
    "shell_cmd": "bash -c \"wslpath '${file}'\" | bash -s",
    "shell": true,
}

在 WSL2 中,我认为最好的方法是使用下面的 sublime-build 文件。

  • 您必须使用以下代码在 Sublime Text 中创建一个新的构建系统。
    (Tools -> Build System -> New Build System...)
    {
    "shell_cmd": "ubuntu run \"g++ `wslpath '${file}'` && ./a.out<inp.in>out.in \" ",
    "shell":true,
    "working_dir":"$file_path",
    "selector":"$file_name"
    }
  • 此代码将编译 .cpp 代码并分别使用 inp.in 和 out.in 作为输入和输出文件 (Optional, if you don't want that, then replace ./a.out<inp.in>out.in with ./a.out)。输出将显示在 Sublime 的构建结果面板中。

  • 当你想使用这个构建系统时,select它在Tools -> Build System列表中,然后点击Ctrl + B