Как скомпилировать и запустить 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]


Вот моя простая программа на языке Си, с которой я работаю:



Экс1-6.c



#include <stdio.h>

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


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

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



После изменения shell на 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, как предложил Юджин к:



Я попытался изменить 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]


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

1931   12  

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". Ссылка на сообщение:

Как я скомпилировать и запустить-а-с-программы-в-возвышенное-текст-2

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

C_environment_setup

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

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

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

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

echo %path%

4) Добавить новые системы построения для возвышенного текста.

Моя версия кода ниже ("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",
}

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

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

Примечание: Кстати, я сделал это на машине с Windows, не могу гарантировать для других! Там, наверное, ничего не получится.

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

Новая Система Сборки

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

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

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

Открывать новые возвышенные построения

Если файл 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 в myC.sublime-build, или вы могли бы как ну так проявите здесь свое творчество. Просто сохраните расширение файла таким же.

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

Обновить текущую систему сборки

Вуаля ! 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}"
     }
   ]
}

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

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

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

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

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

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

Comments

    Ничего не найдено.