2013-08-04 4 views
10

Wenn ich kompilieren wollen, ich brauche -std=c++11 wie folgt angeben:Herstellung -std = C++ 11 der Standard in mac Terminal

g++ -Wall -std=c++11 main.cpp -o main 

und ich frage mich, ob es eine Lösung war, die -std einzustellen = C++ 11 Flag dauerhaft, so dass es möglich ist zu tun:

g++ -Wall main.cpp -o main 

ohne Flags.

+1

'alias g ++ = 'g ++ -std = C++ 11''? –

+1

Eine andere Lösung wäre, GCC zu patchen, so dass es einige frischere/sinnvollere Optionen enthält, als standardmäßig auf einen 15 Jahre alten Standard zu setzen ... –

+0

patchen? Sonst funktioniert der Alias ​​gut, danke. – Choubidou

Antwort

10

Erstellen Sie einen Alias: alias g++='g++ -std=c++11' sollte den Trick tun.

(Allerdings ist die Version von GCC, die mit OS X kommt, ist so alt, dass es nicht C 11 unterstützt ++, dann würden Sie besser dran clang und clang++ verwenden.)

+0

Hum über Klirren tun sowieso werden sollen: Klirren --Version von Apple LLVM Version 4.2 (Klirren-425.0.28) (basierend auf LLVM 3.2svn) Ziel : x86_64-apple-darwin12.4.0 Thread-Modell: posix aber ich weiß nicht, wie man es verwendet – Choubidou

+2

@Choubidou Nun, genau wie Sie GCC verwenden würde. (Aber hey, kannst du nicht einfach "clang usage" googeln? Oder "clang manual"? Oder gib "clang --help" in die Kommandozeile ein?) –

+1

Du hast recht. clang ++ -std = C++ 11 main.cpp -o main :) – Choubidou

5

das weiß ich schon hat ein akzeptiert, aber ich habe das Gefühl, dass ich einen Rat zu bieten habe. Zum einen sollten Sie ein Makefile für C++ verwenden, das ist das, das ich für die Beantwortung von SO verwende. Jetzt

CFLAGS=-std=c++11 
CFLAGS+=-stdlib=libc++ 
CC=clang++ 
#flags for test.c 
cc=clang 
DEBUG=-g 
#warnings 
WARNINGS=-Weverything 
#always have -Weverything on for SO lol 
OPT= -O0 -O1 -O2 -O3 -O4 

test: test.cpp 
    $(info set CC for compiler) 
    $(CC) $(CFLAGS) $< -o [email protected] $(DEBUG) 

stack: stack.cpp 
    $(CC) $(CFLAGS) stack.cpp -o [email protected] $(DEBUG) $(WARNINGS) 

testc: test.c 
    $(cc) $< -o [email protected] $(DEBUG) 


clean: 
    rm test 

, wenn ich herunterladen someones crappy Code aus SO habe ich eine Make-Datei für C und C++ Dateien, in denen ich einfach die Fahnen ändern kann, wenn ich will.

Wie für Bash Alias ​​würde ich vorschlagen, Sie Alias ​​es so wie alias clang++11='clang++ -std=c++11 auf diese Weise überschreiben Sie nicht die clang++, wenn Sie nicht wollen, dass die C++ 11 Standard. Schließlich können Sie die Zeile, die ich Ihnen gerade gezeigt habe, zu Ihrem .bash_profile auf einem Mac hinzufügen, der sich in Ihrem Heim- oder ~-Ordner befindet. Dadurch wird die Änderung dauerhaft. Sobald Sie es ändern, führen Sie source .bash_profile aus, um die Änderungen in Kraft zu setzen. Unter Linux glaube ich, dass die Datei .bashrc heißt. Hoffentlich werden diese Tipps Ihnen helfen, wenn Sie in der Lage sind, die Mac-Befehlszeile zu lernen, hat Unterschiede von der Linux-Version, kann es sehr nützlich sein, einige der Dinge zu wissen, die es tun kann.

Verwandte Themen