2012-02-14 12 views
13

Sono nuovo alla programmazione, quindi non ho mai visto un aggiornamento della lingua. Con il rilascio di C++ 11, voglio sfruttare tutte le nuove funzionalità come espressioni lambda e thread. So che posso farlo con le librerie esterne, ma l'utilizzo di funzionalità in linguaggio nativo sarebbe più conveniente.Come aggiornare a C++ 11?

Sto usando gcc 4.2.1 su Mac OS X Snowleopard in Xcode 3.2.6

Che cosa tutto ho bisogno di fare e di aggiornamento per iniziare a utilizzare C++ 11 caratteristiche?

+3

Vedi http://stackoverflow.com/questions/7482026/can-i-use-the-latest-features-of- c11-in-xcode-4-or-osx-lion ... – StilesCrisis

+1

@StilesCrisis La domanda si riferisce a Lion, mentre sto chiedendo di Snow Leopard ... – fdh

+0

Beh, è ​​certamente solo più impegnativo su Snow Leopard. Direi che MacPorts è lo stesso e Xcode è una causa persa. – StilesCrisis

risposta

24

È possibile eseguire l'aggiornamento a Xcode 4.1 (o qualunque sia la versione più recente disponibile per Snow Leopard) e ottenere un nuovo compilatore con alcune funzionalità in C++ 11. Ci sono alcuni post qui su Stack Overflow su come ottenere un supporto migliore per C++ 11 in Xcode 4.1 su Snow Leopard.

Ma anche l'ultimo compilatore disponibile tramite Xcode non supporta alcune funzionalità di C++ 11 come lambdas. Per ottenere il miglior supporto per C++ 11, ti consigliamo di installare un compilatore più recente, gcc 4.6 o 4.7 o Clang.

Spesso realizzo l'ultima versione di clang dai sorgenti. Non è difficile da fare se hai familiarità con la creazione di altri software open source. Uso i repository git per clang e llvm, http://llvm.org/git/llvm.git e http://llvm.org/git/clang.git. Puoi anche trovare le istruzioni sul loro sito Web per iniziare: http://clang.llvm.org/get_started.html. Una volta che hai la fonte per clang e llvm è solo ./configure && make && sudo make install. (potresti voler eseguire i test prima di installare, poiché questo è direttamente fuori dal repository.Dopo il make fare make check nella directory llvm, e una volta che passa cd in basso a tools/clang ed eseguire make test. Se tutto va bene allora sudo make install)

Non ricordo se Snow Leopard includesse libC++ o no, quindi potrebbe essere necessario ottenerlo. http://libcxx.llvm.org/

Una volta che tutto è costruito e installato si può fare:

clang++ -std=c++11 -stdlib=libc++ main.cpp && ./a.out 

e si dovrebbe avere solo circa il migliore C++ 11 supporto intorno.

Le patch recenti in clang hanno davvero migliorato il supporto per le ultime funzionalità che probabilmente noterete come un nuovo programmatore C++. Ci sono ancora alcuni bit e pezzi rimasti, ma a partire da 3.1, e per quanto ne so, clang ha tutte le funzionalità di C++ 11 che ha gcc 4.7 o VC++ 11 e altro ancora. libC++ ha anche il minor numero di lacune in termini di funzionalità di libreria standard C++ 11 IME (anche se penso che la libreria standard di VC++ sarà abbastanza completa una volta che avranno recuperato le caratteristiche del linguaggio, ad esempio char32_t e char16_t come tipi nativi in ​​modo che le specializzazioni obbligatorie dello standard per quei tipi può essere usato).

+0

Snow Leopard non ha una versione aggiornata di libC++, devi costruirla. Tuttavia, non è chiaro dai documenti di libC++ come farlo con un clang moderno ++. Forniscono istruzioni per Linux, o binari Mac compilati per [Mountain] Lion, es. OS X 10.7 e 10.8. –

+0

@ user465139 Esegui le istruzioni per fare 'cd libcxx/lib; esporta TRIPLE = -apple-; ./buildit' non funziona su Snow Leopard? – bames53

+0

+ clang ++ -c -g -Os -arch i386 -arch x86_64 -std = C++ 0x -U__STRICT_ANSI__ -nostdinC++ -I ../ include ../src/exception.cpp ../src/exception.cpp: 18:12: errore fatale: file 'cxxabi.h' non trovato #include

1

Fondamentalmente è sufficiente ottenere una toolchain che supporti le nuove funzionalità. In macosx che sarebbe GCC o clang ++. Potrebbe essere necessario scaricare/compilare una versione particolare se necessario (ad esempio se la funzione che si desidera provare non si trova in un pacchetto di compilazione preconfezionato ma è disponibile nel repository).

Ho scaricato e compilato l'ultimo trunk di clang ++ da subversion per eseguire alcuni test e installato g ++ 4.6 con macports in Snow Leopard. Ricordo che avevo alcuni problemi con il setup dell'ambiente, ma non ricordo bene quale dei compilatori mi avesse dato problemi o come li avevo risolti. Google è tuo amico lì :)

1

Se è stato installato homebrew, da this article, a due passi:

brew tap homebrew/dupes 
brew install gcc --enable-cxx --enable-fortran --use-llvm