Возвышенный текст 3 - скомпилировать программу и запустить в терминале

Я использую Ubuntu 12.04, и мне было интересно, можно ли автоматически запускать программу С++ с терминала? Это действительно отстой, когда вам нужно использовать встроенную консоль, потому что иногда я делаю бесконечные циклы случайно и должен перезапустить возвышенный текст для работы снова. Я использую текст Sublime 3.

Ответ 1

Sublime Text 3 включает две системы сборки, которые могут вас заинтересовать: С++ и 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.

Ответ 2

{
  "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\"'"]
      }
  ]    
}

Он может работать в терминале и вводить данные с клавиатуры

Ответ 3

Я думаю, что принятый ответ не достигает того, чего хочет ОП. ОП хотел знать, как выполнить текущий файл в терминале.

Настройка @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-терминал автоматически закроет окно выполнения вышеуказанной команды

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

используется таким образом, чтобы убедиться, что мы видим результат выполнения. Смотрите этот пост, где подробно обсуждается, как предотвратить автоматическое закрытие gnome-терминала.

Вариант 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.

Вариант 3: Консоль

Вы можете использовать следующие настройки,

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

Смотрите здесь и здесь, чтобы обсудить, как сохранить консольные окна после исключения из программы.

Ответ 4

В Mac я использую fswatch (я уверен, что есть что-то вроде этого в Linux), чтобы автоматически создавать и запускать тестовый файл на сохранить.

Ответ 5

Вот моя конфигурация для компиляции и запуска программ на С++. Программа принимает входные данные из файла '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 \"'",
    }
] }

Ответ 6

Инструменты >> Система сборки >> Новая система сборки Затем вставьте это и нажмите 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    
    }
]

}

Ответ 7

С помощью этой сборки вы можете напрямую запускать ваши C/C++ программы из subime, нажимая ctrl + shift + B.

Это позволяет пользователю вводить во время выполнения.

Это также помогает в отладке, показывая ошибки в окне терминала, поскольку ваш терминал показывает вам, когда вы запускаете его напрямую.

{ 
   "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\""
     ],
   }
 ]
}