Ich verwende gcc 4.8.1 von http://hpc.sourceforge.net unter Mac OSX Mountain Lion. Ich versuche ein C ++ - Programm zu kompilieren, das die to_string
Funktion in verwendet <string>
. Ich muss die Flagge -std=c++11
jedes Mal benutzen :
g++ -std=c++11 -o testcode1 code1.cpp
Gibt es eine Möglichkeit, dieses Flag standardmäßig einzuschließen?
CXXFLAGS
.Antworten:
H2CO3 ist richtig, Sie können ein Makefile mit dem mit -std = c ++ 11 festgelegten CXXFLAGS verwenden. Ein Makefile ist eine einfache Textdatei mit Anweisungen zum Kompilieren Ihres Programms. Erstellen Sie eine neue Datei mit dem Namen Makefile (mit einem Großbuchstaben M). Um Ihren Code automatisch zu kompilieren, geben Sie einfach den Befehl make in ein Terminal ein. Möglicherweise müssen Sie make installieren.
Hier ist eine einfache:
Es wird davon ausgegangen, dass sich alle CPP-Dateien im selben Verzeichnis wie das Makefile befinden. Sie können Ihr Makefile jedoch problemlos optimieren, um eine src zu unterstützen, Verzeichnisse einzuschließen und zu erstellen.
Bearbeiten : Ich habe den Standard-C ++ - Compiler geändert, meine Version von g ++ ist nicht aktuell. Mit clang ++ funktioniert dieses Makefile einwandfrei.
quelle
Wie bereits erwähnt - im Falle eines Projekts
Makefile
oder auf andere Weise handelt es sich um ein Projektkonfigurationsproblem, bei dem Sie wahrscheinlich auch andere Flags angeben müssen.Aber was ist mit einmaligen Programmen, bei denen Sie normalerweise nur schreiben würden
g++ file.cpp && ./a.out
?Nun, ich würde viel wie einige haben
#pragma
an der Quelle Ebene zu drehen in auf, oder vielleicht eine Standarderweiterung - sagen.cxx
oder.C11
oder was auch immer, Trigger es standardmäßig. Aber bis heute gibt es keine solche Funktion.Da Sie wahrscheinlich in einer manuellen Umgebung (dh einer Shell) arbeiten, können Sie einfach einen Alias in sich haben
.bashrc
(oder was auch immer):oder für neueres G ++ (und wenn Sie "echtes C ++ 11" fühlen möchten)
Sie können sogar einen Alias für
g++
sich selbst erstellen , wenn Sie C ++ 03 so sehr hassen;)quelle
Ich denke, Sie könnten es mit einer Spezifikationsdatei tun.
Unter MinGW können Sie
gcc -dumpspecs> specs ausführen
Wo steht
Sie ändern es in
Und platzieren Sie es dann in
/ mingw / lib / gcc / mingw32 / <Version> / specs
Ich bin sicher, Sie könnten dasselbe ohne einen MinGW-Build tun. Ich bin mir nicht sicher, wo ich die Spezifikationsdatei ablegen soll.
Der Ordner ist wahrscheinlich entweder / gcc / lib / oder / gcc /.
quelle
strace -f gcc your-sources-here 2>&1 | grep specs
. Auf einem (älteren) Debian-System ergibt sich dies/usr/lib/gcc/i586-linux-gnu/4.9/specs
. Erstellt dasspecs
wie in der Antwort beschrieben (benötigt sudo, um es unter Linux dorthin zu verschieben) und funktioniert wie ein Zauber! Vielen Dank.Wenn Sie sublime verwenden, funktioniert dieser Code möglicherweise, wenn Sie ihn in Build als Code für das Build-System hinzufügen. Sie können diesen Link für weitere Informationen verwenden.
quelle