Wie kann man C in sublime text 3 kompilieren und ausführen?

Lesezeit: 8 Minuten

Benutzeravatar von CMPS
CMPS

Ich möchte ein C-Programm in Sublime Text 3 auf Ubuntu 14.04 kompilieren und ausführen. Derzeit wird das Programm mit gcc kompiliert, wobei sublime text 3 einen Befehl ausführt (siehe Code unten), aber ich habe mich gefragt, ob es möglich ist, dass die Ausgabe der Programmausführung auch auf der sublime text-Konsole erscheint.

Folgendes muss ich derzeit zum Kompilieren des C-Programms mit erhabenem Text 3

c_compile.sublime-build

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

Ich habe versucht hinzuzufügen && ./${file_base_name} so was:

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

Aber es gibt mir diesen Fehler:

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]

Hier ist mein einfaches C-Programm, mit dem ich arbeite:

Ex1-6.c

#include <stdio.h>

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

Ich habe online nach einer Lösung gesucht, aber vorgeschlagene Antworten erlauben entweder nur das Kompilieren (diese Teile funktionieren bereits für mich) oder funktionieren nicht. Irgendeine Idee, wie man diesen Code repariert, um Sublime Text 3 zu kompilieren und auszuführen (falls möglich). Vielen Dank

Bearbeiten Sie # 1, wie von user2357112 vorgeschlagen:

Nach dem Wechsel shell zu true:

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

Das bekomme ich:

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]

Bearbeiten Sie Nr. 2, wie von Eugene K vorgeschlagen:

Ich habe versucht, cmd zu ändern, um nur das Programm auszuführen:

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

Es läuft erfolgreich und druckt die Ausgabe auf der Konsole mit etwas Code:

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]

Bisher wird das cmd entweder kompiliert oder ausgeführt, aber nicht beides zusammen. Hoffentlich kann etwas getan werden, damit es mit einem einzigen Befehl kompiliert und ausgeführt wird.

  • && ist eine Schalensache. Dies ist möglicherweise keine gute Idee (ich habe keine Ahnung, wie man Sublime Text 3 verwendet), aber die Einstellung "shell":true könnte die Dinge zum Laufen bringen.

    – Benutzer2357112

    14. Juni 2014 um 23:57 Uhr

  • Ich habe kein Sublime Text 3, aber es scheint zu funktionieren, wo es alle Eingaben nach “gcc” als eine Zeile an gcc sendet, zB > gcc “$filename -o .. && …” Sie möchten Entkomme diesen doppelten Anführungszeichen irgendwie. Vielleicht einen 2. “cmd”-Eintrag machen? oder vielleicht die Shell auf True setzen.

    – Eugen K

    14. Juni 2014 um 23:58 Uhr


  • @ user2357112 nachdem ich die Shell auf true geändert habe, habe ich diese Fehlermeldung erhalten: gcc: fatal error: no input files, compilation terminated. Anstatt von gcc: error: &&. Ich denke, Sie hatten Recht mit der Shell-Sache, aber es funktioniert immer noch nicht :/

    – CMPS

    15. Juni 2014 um 0:04 Uhr


  • @EugeneK Nach dem Hinzufügen eines weiteren cmd wie folgt: cmd:["./${file_base_name}"], jetzt wird die erste überschrieben und die Datei läuft nur noch ohne Kompilierung, was hoffentlich eine vielversprechende Lösung zeigt. Danke für Ihren Vorschlag

    – CMPS

    15. Juni 2014 um 0:19 Uhr

  • Okay, andere Vermutung. Ich weiß nicht viel über Linux, aber vielleicht ein exit oder so etwas dazwischen gcc Befehlsbündel und die filename Teil könnte den Trick tun.

    – Utkan Geser

    15. Juni 2014 um 0:58 Uhr

Benutzeravatar von erbridge
Erbrücke

Haben Sie versucht, einfach den gesamten Befehl in einer einzigen Zeichenfolge zu schreiben?

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

Ich glaube (halbe Spekulation hier), dass ST3 das erste Argument als “Programm” nimmt und die anderen Zeichenfolgen als “Argumente” übergibt. https://docs.python.org/2/library/subprocess.html#subprocess.Popen

  • Neugierig auf diese Lösung, würde in Einklang mit meiner Vorstellung stehen, wie sie funktionieren muss.

    – Eugen K

    15. Juni 2014 um 3:15 Uhr

  • Danke, das funktioniert tatsächlich mit Shell = true; Das einzige Problem, das meiner Meinung nach nicht lösbar ist, ist das Einholen von Benutzereingaben.

    – CMPS

    15. Juni 2014 um 5:45 Uhr

  • AFAIK, ST3 unterstützt keine Benutzereingaben in seinen Build-Systemen.

    – erbridge

    15. Juni 2014 um 10:12 Uhr

  • Für den Fall, dass es zukünftigen Programmierern einige Kopfschmerzen erspart, wollte ich nur darauf hinweisen, dass Sie dies in einer Build-System-Konfigurationsdatei platzieren sollten, indem Sie zu Tools > Build System > New Build System gehen, und NICHT in einer Einstellungs-Konfigurationsdatei (Preferences > Settings – More > Syntaxspezifisch).

    – Jerreck

    3. September 2015 um 14:28 Uhr

  • Welche Bearbeitungen wären erforderlich, um alle Warnungen und Fehler anzuzeigen, die während der Kompilierung auftreten könnten?

    – Jonath P

    11. Mai 2017 um 15:23 Uhr

Für ein großartiges Build-System, das den Menübefehl Run implementiert:

  • Gehen Sie zu Tools->Build-System->Neues Build-System…

Oder

  • Erstellen Sie eine Datei ~/.config/sublime-text-3/Packages/User/GCC.sublime-build

Und das einfügen:

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

*Dieses Beispiel verwendet den GCC-Compiler. Fühlen Sie sich frei zu ersetzen gcc mit dem Compiler Ihrer Wahl.

Nach einer strengen Code-Jagd Session über das Internet habe ich endlich eine Lösung gefunden, die es Ihnen ermöglicht kompilieren + ausführen Ihr C-Code “auf einmal zusammen”in C99in einem spezielles Terminalfenster. Ich weiß, ein paar Leute mögen es nicht C99. Ein paar Leute mag ich auch nicht.

In den meisten Fällen Sublime kompiliert und läuft den Code, aber in C90 oder einer niedrigeren Version. Also wenn du möchte ausdrücklich, dass es C99 istdas ist der richtige Weg.

HINWEIS: Übrigens, ich habe das auf einem Windows-Rechner gemacht, kann für andere nicht garantieren! Da wird es wohl nicht funktionieren.

1. Erstellen Sie ein neues Build-System in Sublime:
Extras > Buildsystem > Neues Buildsystem…

Neues Build-System

2. Eine neue Datei namens untitled.sublime-build erstellt würde.

Höchstwahrscheinlich wird Sublime es für Sie öffnen.

Wenn nicht, gehen Sie zu Einstellungen > Pakete durchsuchen > Benutzer

Öffnen Sie einen neuen Sublime-Build

Wenn die Datei untitled.sublime-build Gibt esdann öffne eswenn es ist nicht dadann manuell erstellen und öffne es.

3. Kopieren Sie den unten angegebenen Code und fügen Sie ihn in den oben genannten ein untitled.sublime-build Datei und speichern Sie sie.

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

Schließen Sie die Datei. Du bist fast fertig!

4. Schließlich benennen Sie Ihre Datei um untitled.sublime-build zu myC.sublime-build, oder Sie können hier genauso gut Ihre Kreativität zeigen. Behalten Sie einfach die Dateierweiterung bei.

5. Endlich setze die aktuelles Build-System zu dem Dateinamen, den Sie im vorherigen Schritt geschrieben haben. In diesem Fall ist es myC

Aktualisieren Sie das aktuelle Build-System

Voila! Kompilieren + Ausführen Ihren C-Code mit C99 von Extras > Erstellen oder durch einfaches Drücken Ctrl + B

Benutzeravatar von rock321987
rock321987

Wir können den Code von C in Sublime Text kompilieren und einige Werte oder Zeichenfolgen drucken, aber es nicht Akzeptieren Sie Eingaben vom Benutzer. (Bis ich weiß … ich bin sicher über das Kompilieren, aber nicht über die Ausgabe von gegebenen Eingaben.) Wenn Sie Windows verwenden, müssen Sie die Umgebungsvariablen für Sublime Text und den GCC-Compiler setzen.

Benutzeravatar von Maks
Mach

Die Anleitung basiert auf dem „Eismelonen“-Pfosten. Link zum Beitrag:

wie-kompiliere-und-führe-ich-ac-programm-in-sublime-text-2

Verwenden Sie den folgenden Link, um herauszufinden, wie Sie die Umgebungsvariable auf Ihrem Betriebssystem einrichten:

c_environment_setup

Die nachstehende Anleitung wurde auf dem Windows 8.1-System und Sublime Text 3 – Build 3065 getestet.

1) Installieren Sie MinGW. 2) Fügen Sie den Pfad zu „MinGW\bin“ in der „PATH-Umgebungsvariable“ hinzu.

„Systemeigenschaften -> Erweitert -> Umgebung“ Variablen und aktualisieren Sie dort die „PATH“ Variable.

3) Überprüfen Sie dann Ihre PATH-Umgebungsvariable mit dem folgenden Befehl in der “Eingabeaufforderung”:

echo %path%

4) Fügen Sie dem Sublime Text ein neues Build System hinzu.

Meine Version des Codes unten (“C.sublime-build”).

Link zum Code:

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"]
        }
    ]
}

Benutzeravatar von Akansh
Akansh

Der neueste Build von sublime erlaubt sogar den direkten Befehl anstelle von doppelten Anführungszeichen. Probieren Sie den folgenden Code für das Build-System aus

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

Benutzeravatar der Community
Gemeinschaft

Der beste Weg wäre, einfach ein Makefile für Ihr Projekt zu verwenden, und ST3 erkennt automatisch das Build-System für Ihr Projekt. Zum Beispiel. Wenn Sie Umschalt + Strg / cmd + B drücken, sehen Sie Folgendes:
Machen

1393510cookie-checkWie kann man C in sublime text 3 kompilieren und ausführen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy