如何在Windows系统中使用Sublime Text在外部控制台中运行程序?

时间:2012-07-22 15:11:21

标签: c++ windows console mingw sublimetext

我设法为C ++配置Sublime Text 2,我现在可以编译我的代码(使用MinGW编译器)。

不幸的是,Sublime Text控制台无法支持C ++的任何输入。

我想在外部控制台(例如Window的终端)中打开我编译的程序。 我尝试使用“call”或“c​​md”但无法使其正常工作。 (它仍然在控制台中打开文件)

这是我的构建配置:

{
"cmd": ["C:\\MinGW\\bin\\mingw32-g++.exe", "-Wall", "-time", "$file", "-o", "$file_base_name"],
"cmd": ["call", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"working_dir": "${project_path:${folder}}",
"selector": "source.c",
"shell": true,
"encoding": "latin1"
}

6 个答案:

答案 0 :(得分:14)

试试这个:

{
    "cmd": ["C:\\Dev-Cpp\\bin\\mingw32-g++.exe", "-static", "-Wall", "-time", "$file", "-o", "$file_base_name.exe", "&&", "start", "$file_base_name"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "working_dir": "${project_path:${folder}}",
    "selector": "source.c",
    "shell": true,
    "encoding": "latin1"
}

诀窍是使用“start”命令执行生成的文件,该命令强制文件在新的cmd窗口中打开,并将所有内容放在第一个cmd定义中(使用&&来执行这两个命令),因为如果你定义了多个cmd数组,它们就会覆盖。

答案 1 :(得分:8)

@FacundoJ:在Mac上,您可以使用终端在外部运行应用程序。在C ++。sublime-build中,更改cmd,使其不是仅运行已编译的输出,而是在Terminal中启动它。

更改自:

"cmd": ["bash", "-c", "g++ '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]

要:

"cmd": ["bash", "-c", "g++ '${file}' -o '${file_path}/${file_base_name}' && open -a Terminal.app '${file_path}/${file_base_name}'"]

答案 2 :(得分:3)

接受的答案允许您在Windows CMD中执行程序并接受输入。 但是一旦程序执行结束,cmd窗口将立即关闭,然后才能清楚地看到输出

我认为您应该尝试以下解决方案,在执行程序后保持CMD窗口打开,以便您可以检查结果

{
    "shell_cmd": "g++ -Wall -std=c++11 \"${file}\" -o \"${file_path}/${file_base_name}.exe\"",
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c, source.c++",

    "variants":
    [   // run in the sublime text console
        {
            "name": "Run",
            "shell_cmd":"\"${file_path}/${file_base_name}\""
        },
        // run in the Windows cmd
        {
            "name": "Run in cmd",
             // the following two settings are all valid, choose one you prefer
            "shell_cmd":   "start cmd /k  $file_base_name "
            // "shell_cmd":   "start \"$file_base_name\" call $file_base_name"
        }
    ]
}

首先按 Ctrl + B 编译程序,然后按 Ctrl + Shift + B 并选择run in cmd选项,它将在系统CMD而不是Sublime Text控制台中运行程序。

以上设置在Windows 8.1上进行了测试,也可以在开箱即用的Windows 7和Windows 10上运行。

答案 3 :(得分:2)

在@FacundoJ接受的答案中,每次运行时都会编译程序。这并不总是必要的(即当您只修改一些外部资源或使用主args时)。在这种情况下,我推荐这个设置:

{
  "cmd": ["g++", "$file", "-o", "$file_base_name.exe"],
  "working_dir": "${project_path:$folder}",
  "selector": "source.cpp",
  "shell": true,
  "variants": [{
    "name": "Run",
    "cmd": ["start", "", "$file_base_name"]
  }]
}

(假设你的PATH中有C:\ MinGW \ bin),所以你可以像

一样使用它
  • Ctrl + B 编译程序

  • Ctrl + Shift + B 运行它(当然在编译后)

Note1 请注意start命令后的空字符串:should be used

Note2 您应该使用.cpp后缀,或者默认使用C89语法(至少使用MinGW g ++编译器)

答案 4 :(得分:2)

对于ubuntu

{
"cmd": ["g++ ${file} && xterm -hold -e ./a.out"], 
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c++",
"shell": true,
}

这个构建系统做的是编译.cpp文件并在xterm中打开输出文件。

- >如果您希望输出在 gnome-terminal 中打开,请创建个人资料

在gnome-terminal中,转到编辑 - >配置文件首选项 - >单击“命令”选项卡。选择'保持终端打开'从标记为“当命令退出”的下拉菜单中。您应该为该

创建新的配置文件

然后替换" cmd"与

 "cmd": ["g++ ${file} && gnome-terminal --window-with-profile=PROFILENAME -e ./a.out"]

答案 5 :(得分:0)

这是工作!!

{"cmd": ["g++", "-Wall", "-ansi", "-pedantic-errors", "$file_name", "-o", 
"${file_base_name}.exe", "&&", "start", "cmd", "/k" , "$file_base_name"],
"selector": "source.cpp",
"working_dir": "${file_path}",
"shell": true}
  • 只需转到工具>构建系统>新构建 系统..." C ++。sublime-build" ...和必须保存为所有文件
  • 选择该构建

只需输入(ctrl + b)即可查看提升的命令提示符,并像其他IDE一样提供输入。