2016-05-09 6 views
5

Ich weiß, dass wir Programm als C++ mit g ++ Compiler kompilieren können. Aber der g ++ - Compiler ist standardmäßig auf Version 98 eingestellt. Um es als C++ 14 auszuführen, müssen wir -std=c++14 im Terminal hinzufügen.Kompilieren von Programm als C++ 14 in Sublime Text 3 als Standard

Sublime Text gilt aufgrund seines geringen Gewichts und seiner Funktionen als ein wertvoller Editor für wettbewerbsfähige Programmierung. In diesen Wettbewerben ist die Zeit wichtig und somit wird die Zeit verschwendet, wenn man in eine Textdatei kopiert und dann vom Terminal aus läuft. C++ 14 verfügt über eine umfangreiche Bibliothek und andere wichtige Funktionen im Vergleich zu 98. So würde man gerne den Code auf sublimen Text und als C++ 14 kompilieren können.

Aber wie kann ich sicherstellen, dass wenn ich den Code kompiliere in Sublime Text 3 kompiliert es als Standard zu C++ 14?

Nach einigen Hantieren kam ich folgende Lösung up -.

  1. Pakete gehen und extrahiert C++ sublime-Paket
  2. öffnen C++ Einzel File.sublime-build
  3. ändern

    "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\"" 
    

    zu

    "shell_cmd": "g++ -std=c++14 \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\"" 
    

    Added -std=c++14 sowohl in Entwicklungs- und Betrieb

  4. speichert es und überschreibt Paket ursprünglich in Sublime Text 3

Ist dies der richtige Weg, dies zu tun? Es wird als einzelne Datei benannt - Ist das etwas, worüber ich mich Sorgen machen muss, wenn ich mehrere Dateien verwenden möchte?

Antwort

5

Es ist besser, ein neues Build-System zu erstellen, gehen Sie wie folgt:

Klicken Sie auf Tools -> Build System -> New Build System.

Das ist, was ich benutze (-std=c++14 die Flagge bemerken)

{ 
"cmd":["bash", "-c", "g++ -std=c++14 -Wall '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"], 
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", 
"working_dir": "${file_path}", 
"selector": "source.c, source.c++", 
"variants": 
[ 
    { 
    "name": "Run", 
    "cmd":["bash", "-c", "g++ -std=c++14 '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"] 
    } 
] 
} 

(ich glaube, Sie nur die Linie können Sie bereits haben und es an eine neue Build-System-Datei zu speichern.)

Jetzt Speichern Sie den neuen Build, wählen Sie ihn in Tools -> Build System.
Und jetzt können Sie bauen und mit CTRL + B

+0

Was ist mit dem Kompilieren mehrerer Dateien - wie Pakete. Sollte ich mir darüber Gedanken machen, wie der Dateiname (C++ Single File-Sublime-Build) vorschlägt, dass es nur für eine einzelne Datei wäre? –

1

Normalerweise ist es schlecht, Standarddateien zu bearbeiten. Erstellen Sie einfach ein neues Build-System Palette -> Build: Neues Build-System fügen Sie Ihre Änderungen dort hinzu und speichern Sie es wie Sie wollen. Dann, wenn Sie es verwenden möchten, wählen Sie einfach bauen mit: (Neubau Systemname) Wenn Sie auch die bauen wollen - Run-Option, verwenden Sie stattdessen diesen Code:

{ 
"cmd": ["g++", "-std=c++14", "${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", 
    "cmd":["bash", "-c", "g++ -std=c++1y '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"] 
    } 
] 

} 
+0

_-std = C++ 1y ist das gleiche wie -std = C++ 14_ Nein ist es nicht. – erip

+0

Was ist mit dem Kompilieren mehrerer Dateien - wie Pakete. Sollte ich mich darum sorgen, wie der Dateiname andeutet, wäre es nur für eine einzelne Datei? –

+0

@erip was sind Unterschiede zwischen -std = C++ 14 und -std = C++ 1y –

0

Der beste Weg, Standarddateien bearbeiten ist zu verwenden PackageResourceViewer.

Nach der Installation den Befehl PackageResourceViewer: Open Resource von command palette ausführen. Sie werden eine Liste der Pakete angezeigt, in die Sie navigieren können, um die Datei auszuwählen, die Sie bearbeiten möchten.

Die ausgewählte Datei wird in einem neuen Dokument geöffnet werden, und alle Änderungen werden in eine neue Datei an Packages/PackageThatYouEdited/FileThatYouEdited.ext

Der Vorteil dieser Methode liegt gespeichert werden, dass die bearbeitete Datei in Packages jetzt wird die ursprüngliche Datei überschreiben Das liegt in der sublime-package Datei, aber die ursprüngliche Datei bleibt intakt. Wenn Sie die bearbeitete Datei löschen möchten, ist die Originaldatei in der sublime-package wieder aktiv.