2013-08-04 13 views
10

Quando voglio compilare, devo specificare -std=c++11 in questo modo:Fare -STD = C++ 11 il default nel terminale mac

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

e mi chiedo se ci fosse una soluzione per impostare il -std = C++ 11 flag in modo permanente così sarà possibile fare:

g++ -Wall main.cpp -o main 

senza bandiere.

+1

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

+1

Un'altra soluzione sarebbe l'applicazione di patch a GCC in modo che includesse alcune opzioni più fresche/più sensate rispetto all'impostazione predefinita per uno standard di 15 anni ... patching –

+0

? Altrimenti, l'alias funziona bene, grazie. – Choubidou

risposta

10

Creare uno pseudonimo: alias g++='g++ -std=c++11' dovrebbe fare il trucco.

(Tuttavia, la versione di GCC che viene fornito con OS X è così antica che non supporta C++ 11, si sarebbe meglio utilizzare clang e clang++.)

+0

Hum riguardante clang: clang --version di Apple LLVM versione 4.2 (clang-425.0.28) (sulla base di LLVM 3.2svn) target : x86_64-apple-darwin12.4.0 Filetto: posix ma non so come usarlo – Choubidou

+2

@Choubidou Bene, proprio come si usa GCC. (Ma hey, non puoi semplicemente google "clang usage"? O "clang manual"? Oppure digita 'clang --help' nella riga di comando?) –

+1

Hai ragione. clang ++ -std = C++ 11 main.cpp -o main :) – Choubidou

5

So che questo già ha accettato ma sento di avere qualche consiglio da offrire. Per uno si dovrebbe usare un makefile per C++, questo è quello che uso per rispondere su SO.

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 

Ora ogni volta che qualcuno scaricare codice di merda da così ho un makefile per i file C e C++, dove posso facilmente cambiare le bandiere se voglio.

Per quanto riguarda l'alias bash, suggerirei di creare alias in questo modo alias clang++11='clang++ -std=c++11 in questo modo non sovrascrivere lo clang++ se non si desidera utilizzare lo standard C++ 11. Infine puoi aggiungere la linea che ti ho appena mostrato sul tuo .bash_profile su un mac che si trova nella tua casa o nella cartella ~, questo renderà la modifica permanente. Una volta modificato, esegui source .bash_profile per applicare le modifiche. Su Linux penso che il file si chiami .bashrc. Speriamo che questi suggerimenti ti aiuteranno quando ur C++, ti consiglierei di imparare la linea di comando mac, ha differenze con linux, può essere molto utile sapere alcune delle cose che può fare.

Problemi correlati