Sublime text 3 - 编译程序并在终端中运行

时间:2014-01-17 21:19:50

标签: c++ ubuntu compiler-construction sublimetext3

我正在使用Ubuntu 12.04,我想知道,是否有可能从终端自动运行c ++程序?当你不得不在构建控制台中使用它时,它真的很糟糕,因为有时候我会意外地创建无限循环,并且必须重新启动sublime文本再次工作。 我正在使用Sublime text 3。

8 个答案:

答案 0 :(得分:20)

Sublime Text 3包含两个您可能感兴趣的构建系统:C ++和Make。 C++.sublime-build文件如下:

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

    "variants":
    [
        {
            "name": "Run",
            "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\""
        }
    ]
}

要使用它,请转到Tools -> Build System并选择C++。您现在可以使用 Ctrl B 来运行构建(顶层命令),或者 Ctrl Shift B 运行Run变体。

答案 1 :(得分:7)

{
  "cmd": ["g++", "$file", "-o", "${file_path}/${file_base_name}"],
  "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
  "working_dir": "${file_path}",
  "selector": "source.c, source.c++, source.cxx, source.cpp",
  "variants":
  [
      {
          "name": "Run",
          "shell": true,
          "cmd": ["gnome-terminal -e 'bash -c \"${file_path}/${file_base_name};echo;echo;  echo Press ENTER to continue; read line;exit; exec bash\"'"]
      }
  ]    
}

它可以在终端中运行并从键盘输入数据

答案 2 :(得分:1)

我认为接受的答案并没有实现OP想要实现的目标。 OP希望知道如何在终端中执行当前文件

@ Flycode的设置对我不起作用。我使用CentOS 7和Sublime Text 3.由于人们可能使用不同的终端模拟器,所以我列出了不同终端的不同设置。

注意

以下设置在上述环境中进行了测试,效果很好。我不能保证他们会在其他环境中工作。如果它不适合你,请告诉我。

选项1:GNOME终端

您可以使用以下设置

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

    "variants":
    [
        {
            "name": "Run",
          "shell_cmd": "gnome-terminal -e 'bash -c \"${file_path}/${file_base_name};exec bash \"'",
        }
    ]
}

gnome-terminal会自动关闭执行窗口,上面的命令

   "shell_cmd": "gnome-terminal -e 'bash -c \"${file_path}/${file_base_name};exec bash \"'" 
使用

来确保我们可以看到执行结果。有关如何防止gnome-terminal自动关闭的详细讨论,请参阅this SO post

选项2:XTerm

您可以使用以下设置(为简洁起见,我省略了一些设置)

{    // same stuff as option 1
    "variants":
    [
        {
           "name": "Run",
            //use this if you want to input other command after programm execution
           "shell_cmd": "xterm -e '${file_path}/${file_base_name}; bash'",
           //or you can use the below setting if you just want to execute this program
           // "shell_cmd": "xterm -hold -e ${file_path}/${file_base_name}",

        }
    ]
}

有关阻止xterm窗口自动关闭的信息,请参阅this SO post

选项3:Konsole

您可以使用以下设置

{    // same stuff as option 1
        "variants":
        [
            {
                "name": "Run",
                "shell_cmd": "konsole --hold -e ${file_path}/./${file_base_name}",        
            }
        ]
}

请参阅此处和here讨论,以便在排除程序后保留konsole窗口。

答案 3 :(得分:0)

在Mac上,我使用fswatch(我确信在Linux上有类似的东西)来自动构建&在保存时运行测试用例。

答案 4 :(得分:0)

这是我编译和运行C ++程序的配置。程序从文件' input.txt'中获取输入。并将输出打印到" output.txt'。当前工作目录中存在的文件 操作系统:ubuntu 16
崇高3
- > "工具>构建系统>新的构建系统"并复制以下设置

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

"variants":
[
    {
        "name": "Run",
      "shell_cmd": "gnome-terminal -e 'bash -c \"${file_path}/${file_base_name} < input.txt > output.txt \"'",
    }
] }

答案 5 :(得分:0)

工具>>生成系统>>新的生成系统然后将其粘贴并按Ctrl + S保存文件。 现在转到工具>>构建系统>>选择文件>>现在编写代码>>按Ctrl + B >>选择“在终端中运行以进行构建并运行代码”

{
"shell_cmd": "g++ -std=c++11 -Wall \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"shell": true,
"working_dir": "${file_path}",
"selector": "source.c++, source.cpp, source.cc, source.cxx",
"variants":
[
    {
        "name": "Run in Terminal",
        "shell_cmd": "g++ -std=c++11 -Wall \"${file}\" -o \"${file_path}/${file_base_name}\" && gnome-terminal -e 'bash -c \"${file_path}/${file_base_name}&& echo && echo Press ENTER to continue && read line && exit\"'", // for gnome-terminal    
    }
]

}

答案 6 :(得分:0)

通过此构建,您可以通过按ctrl + shift + B直接在subime中运行C / C ++程序。

它允许用户在运行时输入。

通过直接在终端窗口上显示终端时在终端窗口上显示错误,它也有助于调试。

{ 
   "cmd": "g++ \"${file}\" -o \"${file_path}\\\\${file_base_name}\"",
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}", 
   "selector": "source.c,source.c++,source.cpp",
   "shell":true,
   "variants": [
   { 
       "name": "Run",
        "cmd" : ["gnome-terminal -- bash -c \"g++ $file_name ;echo -------------output--------------; ./a.out;echo;echo;  echo Press ENTER to continue; read line;exit; exec bash\""
     ],
   }
 ]
}

答案 7 :(得分:0)

在目录Tools >> Build System >> New Build System中。 创建新文件。现在也可以输入。

{

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

"variants":
[
    {
        "name": "Run",
        "cmd": ["x-terminal-emulator", "-e", "bash", "-c", "g++ -Wall -std=c++11 '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'; read -p 'Press any key to continue...'"]
    }
]

}