2016-06-22 19 views
0

Endung Wie Sie wissen, können Sie eine Datei in Sublime bauen entweder:Gebäude C++ Dateien auf Sublime Text 3 nicht

1) Durch Strg + Umschalttaste + B (Build Mit) -> C++ Single File

2) Durch Strg + Umschalttaste + B (Build Mit) -> C++ Single File - Run

über die erste Option habe ich keine Probleme: file, Sublime bestätigt kompiliert, und ich erlebe keine Probleme .

Wenn ich es auf die zweite Art mache, kann Sublime den Build-Prozess nicht stoppen. Direkt nachdem ich auf Build geklickt habe, wird ein Prozess '(Dateiname) .exe (32 Bit)' im Task-Manager erstellt, aber das EXE-Programm läuft nie automatisch von Sublime (ich muss es selbst ausführen), und Sublime bestätigt es nie der Bau.

Wie kann ich das beheben?

ist die sublime-Build-Datei:

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

Bitte bearbeiten Sie Ihre Frage und geben Sie den Inhalt Ihrer '.sublime-build' Datei an. – MattDMo

+0

@MattDMo hat es gerade getan. – devidduma

+0

Ich nehme an, Sie haben die "Run" -Variante des Build-Systems ausgeführt? Wenn dein Programm nicht normal beendet wurde, denkt Sublime immer noch daran, dass es läuft. Glaubt Windows immer noch, dass es ausgeführt wird - d. H. Es wird im Task-Manager oder durch Ausführen von "ps -ax |" angezeigt grep programname.exe von der Cygwin/bash-Shell, vorausgesetzt, Sie haben das installiert. Wenn dies der Fall ist, versuchen Sie, alle Instanzen über den Task-Manager zu löschen (möglicherweise müssen Sie ihn mit Administratorrechten ausführen) oder indem Sie die PID (Prozess-ID) früher aus dem Befehl "ps" abrufen und "kill -9 123456" oder was auch immer ausführen die PID ist. – MattDMo

Antwort

1

Versuchen Sie, die ` "Varianten" Abschnitt wie so Bearbeitung:

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

Dies wird eine separate Instanz von cmd.exe starten und neuer laufen in ihm ausführbare Datei erstellt. Ein möglicher Grund, warum Ihr Build nicht erfolgreich ist, ist der .exe, der auf Eingabe wartet, die die Sublime-Konsole nicht zulässt (es ist kein echtes Terminal).

+0

Sie haben Recht, es wartet auf Eingabe. Ich habe den obigen Code kopiert, aber jetzt erscheint dieser Fehler: "shell_cmd oder cmd ist erforderlich [cmd: None] ..." sollte ich eine Systemvariable cmd hinzufügen, um auf cmd zu zeigen? oder vielleicht den Cmd zu ComSpec ändern, da es bereits auf den Speicherort von cmd.exe zeigt? – devidduma

+0

@devidduma Ich habe fälschlicherweise die eckigen Klammern entfernt. Sehen Sie sich JSON jetzt an und fügen Sie * that * dem Build-System hinzu. Der Fehler hat mit der Formatierung zu tun, nicht 'cmd.exe' selbst. '" Varianten "' ist ein Array, kein Diktat. – MattDMo

+0

Ich wusste nicht, dass ich Package Control und PackageResourceViewer installieren musste, um die Dateien zu ändern, ich habe versucht, sie selbst zu bearbeiten. Alles funktioniert jetzt perfekt, vielen Dank – devidduma