Как скомпилировать и запустить C в sublime text 3?

Я хотел бы скомпилировать и запустить программу C в sublime text 3 на ubuntu 14.04. В настоящее время программа компилируется с gcc, используя sublime text 3, выполняющий команду (см. ниже код), но мне было интересно, возможно ли, чтобы выходные данные выполнения программы также появлялись на консоли sublime text.

вот что я в настоящее время должен скомпилировать программу C с sublime text 3

c_compile.sublime-build

{
"cmd" : ["gcc", "$file_name", "-o", "${file_base_name}"],
"selector" : "source.c",
"shell":false,
"working_dir" : "$file_path"
}

Я пробовал добавлять && ./${file_base_name} такой:

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

но это дает мне эту ошибку:

gcc: error: &&: No such file or directory
[Finished in 0.0s with exit code 1]
[cmd: ['gcc', 'Ex1-6.c', '-o', 'Ex1-6', '&&', './Ex1-6']]
[dir: /home/admin/Desktop/C/book/chap1]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

вот моя простая программа C, с которой я работаю:

Ex1-6.c

#include <stdio.h>

main(){
    printf("Hello world");
}

Я искал в Интернете решение, но предлагаемые ответы либо позволяют компилировать только (эти части уже работают для меня), либо не работают. Любая идея, как исправить этот код, чтобы скомпилировать и запустить в sublime text 3 (Если это возможно). Благодарить вы

редактировать #1, Как предложено user2357112:

после изменения shell to true:

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

вот что я получил:

gcc: fatal error: no input files
compilation terminated.
[Finished in 0.0s with exit code 4]
[cmd: ['gcc', 'Ex1-6.c', '-o', 'Ex1-6', '&&', './Ex1-6']]
[dir: /home/admin/Desktop/C/book/chap1]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

редактировать #2, как предложил Евгений K:

Я попытался изменить cmd, чтобы запустить программу только:

{
"cmd" : ["./${file_base_name}"],
"selector" : "source.c",
"shell":false,
"working_dir" : "$file_path"
}

он успешно работает и печатает вывод на консоли с некоторым кодом:

Hello world
[Finished in 0.0s with exit code 12]
[cmd: ['./Ex1-6']]
[dir: /home/amir/Desktop/C/book/chap1]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

пока ЦМД либо компилирует или работает, но не делает оба вместе, надеюсь, что-то можно сделать, чтобы сделать его компилировать и запускать с помощью одной команды.

12 ответов


вы пробовали просто написать всю команду в одной строке?

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

Я считаю (полу-спекуляция здесь), что ST3 принимает первый аргумент как "программу" и передает другие строки как "аргументы". https://docs.python.org/2/library/subprocess.html#subprocess.Popen


для системы sublime build, реализующей команду меню Run:

  • перейдите в инструменты - >система сборки - >новая система сборки...

или

  • создайте файл ~/.config/sublime-text-3/Packages/User/GCC.sublime-build

и вставить это:

{
"shell_cmd" : "gcc $file_name -o ${file_base_name}",
"working_dir" : "$file_path",
"variants":
  [
    {
      "name": "Run",
      "shell_cmd": "gcc $file_name -o ${file_base_name} && ${file_path}/${file_base_name}"
    }
  ]
}

*в этом примере используется компилятор GCC. Не стесняйтесь заменить gcc с компилятором по вашему выбору.


мы можем скомпилировать код C в Sublime Text и напечатать некоторое значение или строки, но это не признавайте входной сигнал от потребителя. (Пока не узнаю... Я уверен в компиляции, но не в выводе из данного ввода.) Если вы используете Windows, вы должны установить переменные среды для Sublime Text и компилятора GCC.


инструкция основана на посте "icemelon". Ссылка на сообщение:

how-do-I-compile-and-run-a-c-program-in-sublime-text-2

используйте ссылку ниже, чтобы узнать, как настроить переменную среды в вашей ОС:

c_environment_setup

приведенная ниже инструкция была протестирована на системе Windows 8.1 и Sublime Text 3-build 3065.

1) Установите MinGW. 2) Добавьте путь к "MinGW\bin" в " PATH переменная окружения."

" системные свойства -> дополнительно -> переменные среды "и там обновить переменную "путь".

3) затем проверьте переменную среды PATH командой ниже в "командной строке":

echo %path%

4) Добавьте новую систему сборки в текст Sublime.

моя версия кода ниже ("C. sublime-build").

ссылка на код:

C. sublime-build

// Put this file here:
// "C:\Users\[User Name]\AppData\Roaming\Sublime Text 3\Packages\User"
// Use "Ctrl+B" to Build and "Crtl+Shift+B" to Run the project.
// OR use "Tools -> Build System -> New Build System..." and put the code there.

{
    "cmd" : ["gcc", "$file_name", "-o", "${file_base_name}.exe"],

    // Doesn't work, sublime text 3, Windows 8.1    
    // "cmd" : ["gcc $file_name -o ${file_base_name}"],

    "selector" : "source.c",
    "shell": true,
    "working_dir" : "$file_path",

    // You could add path to your gcc compiler this and don't add path to your "PATH environment variable"
    // "path" : "C:\MinGW\bin"

    "variants" : [

        { "name": "Run",
          "cmd" : ["${file_base_name}.exe"]
        }
    ]
}

последняя сборка sublime даже позволяет прямую команду вместо двойных кавычек. Попробуйте приведенный ниже код для системы сборки

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

после тщательного код-охота сеанс через интернет, я наконец придумал решение, которое позволяет compile + run ваш код C "в", в C99, в выделенное окно терминала. Я знаю, некоторые люди не любят C99. Мне тоже не нравятся некоторые люди.

в большинстве случаев Sublime компилируется и работает в код, но в C90 или меньшей версии. Так что если вы специально хочу, чтобы это был C99, это путь.

Примечание: кстати, я сделал это на машине Windows, не могу гарантировать для других! Возможно, там это не сработает.

1. Создайте новую систему сборки в Sublime: Инструменты > Система Сборки > Новая Сборка Система...

New Build System

2. Новый файл под названием untitled.sublime-build будет создан.

скорее всего, Sublime откроет его для вас.

если нет, перейдите к Настройки > Просмотр Пакетов > Пользователь

Open new sublime-build

если файл untitled.sublime-build здесь, потом открыть, если это нет, тогда создать ее вручную и открыть.

3. Скопируйте и вставьте приведенный ниже код в указанном выше untitled.sublime-build файл и сохраните его.

{
    "windows":
    {
        "cmd": ["gcc","-std=c99" ,"$file_name","-o", "${file_base_name}.exe", "-lm", "-Wall", "&","start", "${file_base_name}.exe"]
    },
    "selector" : "source.c",
    "shell": true,
    "working_dir" : "$file_path",
}

закрыть файл. Вы почти закончили!

4. Наконец переименуйте файл из untitled.sublime-build to myC.sublime-build, или вы могли бы также показать свое творчество здесь. Просто держите расширение файла таким же.

5. Наконец установить текущая Построить Систему к имени файла, которое вы написали на предыдущем шаге. В этом случае это myC

Update current build system

вуаля ! Compile + Run ваш код C с помощью C99 by Инструменты > Создать , или просто нажать Ctrl + B


лучшим способом было бы просто использовать Makefile для вашего проекта, и ST3 автоматически обнаружит систему сборки для вашего проекта. Например. Если вы нажмете shift + ctrl / cmd +B, вы увидите это:


попробуйте написать сценарий оболочки с именем run.sh в вашем проекте foler

#!/bin/bash
./YOUR_EXECUTIVE_FILE
...AND OTHER THING

и сделает Build System чтобы скомпилировать и выполнить его:

{
      "shell_cmd": "make all && ./run.sh"
}

не забудьте $chmod +x run.sh

сделайте одну вещь и сделайте ее хорошо:)


вы используете sublime text в linux? Я получил ту же проблему, и она была решена! Вот мой c.sublime-build:

{
 "shell_cmd" : "gcc $file_name -o $file_base_name && ./$file_base_name", 
 "selector" : "source.c",
 "shell":true,
 "working_dir" : "$file_path"
}

код, который работал для меня на машине Windows 10 с использованием Sublime Text 3

 {
 "cmd" : "gcc $file_name -o ${file_base_name}",
 "selector" : "source.c",
 "shell" : true,
 "working_dir" : "$file_path",
 "variants":
    [
     {
      "name": "Run",
      "cmd": "${file_base_name}"
     }
   ]
}

В Sublime Текст 3....Попробуйте изменить приведенный выше код на этот, обратите внимание на добавление "пуск".....

"вариантов" : [

    { "name": "Run",
      "cmd" : ["start", "${file_base_name}.exe"]
    } 

Если вы кодируете язык C или c++. Я думаю, нам повезло, что мы могли бы использовать файл для ввода. Это так удобно и понятно. Я часто так делаю. Это аргумент для его реализации :

{
freopen("inputfile", "r", stdin);
}

обратите внимание, что inputfile должен находиться в том же каталоге с файлом исходного кода, r-это подставка для чтения.