2012-02-14 22 views
13

Soy nuevo en programación, por lo que nunca he experimentado una actualización de idioma. Con el lanzamiento de C++ 11, quiero hacer uso de todas las características nuevas, como las expresiones e hilos lambda. Sé que puedo hacer esto con bibliotecas externas, pero sería más conveniente usar las características del idioma nativo.¿Cómo actualizar a C++ 11?

estoy usando gcc 4.2.1 en Mac OS X Snowleopard en Xcode 3.2.6

Lo que todo necesito para hacer y actualización para comenzar a usar C++ 11 características?

+3

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

+1

@StilesCrisis La pregunta se refiere a Lion, mientras le pregunto sobre Snow Leopard ... – fdh

+0

Bueno, ciertamente es más desafiante en Snow Leopard. Supongo que MacPorts es lo mismo y Xcode es una causa perdida. – StilesCrisis

Respuesta

24

Puedes actualizar a Xcode 4.1 (o la versión más reciente que puedas obtener de Snow Leopard) y obtener un nuevo compilador con algunas características más de C++ 11. Hay algunos mensajes aquí en Stack Overflow sobre cómo obtener un mejor soporte para C++ 11 en Xcode 4.1 en Snow Leopard.

Pero incluso el último compilador disponible a través de Xcode no admite algunas características de C++ 11 como lambdas. Para obtener la mejor compatibilidad con C++ 11, querrá instalar un compilador más nuevo, gcc 4.6 o 4.7, o Clang.

Con frecuencia construyo la última versión de clang de la fuente. No es difícil de hacer si está familiarizado con la creación de otro software de código abierto. Yo uso los repositorios git para clang y llvm, http://llvm.org/git/llvm.git y http://llvm.org/git/clang.git. También puede encontrar instrucciones en su sitio web para comenzar: http://clang.llvm.org/get_started.html. Una vez que tienes la fuente para clang y llvm es solo ./configure && make && sudo make install. (Es posible que desee ejecutar las pruebas antes de la instalación, ya que esto está directamente fuera del repositorio. Después de make haga make check en el directorio llvm, y una vez que pase cd a tools/clang y ejecute make test. Si todo está bien, entonces sudo make install)

No recuerdo si Snow Leopard incluyó libC++ o no, por lo que es posible que tenga que obtenerlo también. http://libcxx.llvm.org/

Una vez que todo está construido e instalado que puede hacer:

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

y usted debe tener casi el mejor soporte para C++ 11 alrededor.

Los parches recientes en clang realmente han mejorado el soporte para las últimas características que probablemente notará como un nuevo programador de C++. Todavía quedan algunos bits y piezas, pero a partir de 3.1, y hasta donde yo sé, clang tiene todas las características de C++ 11 que tiene gcc 4.7 o VC++ 11 y más. libC++ también tiene la menor brecha en términos de la biblioteca estándar C++ 11 IME (aunque creo que la biblioteca estándar de VC++ también estará bastante completa una vez que se pongan al día con las características del lenguaje, por ejemplo char32_t y char16_t como tipos nativos para que las especializaciones obligatorias de la norma para esos tipos se pueden usar).

+0

Snow Leopard no tiene una versión actualizada de libC++, debe compilarla. Sin embargo, no está claro a partir de los documentos de libC++ cómo hacerlo con un moderno clang ++. Proporcionan instrucciones para los binarios de Linux o Mac compilados para [Mountain] Lion, es decir. OS X 10.7 y 10.8. –

+0

@ user465139 Haz las instrucciones para hacer 'cd libcxx/lib; exportar TRIPLE = -apple-; ./buildit' no funciona en 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: error fatal: archivo 'cxxabi.h' no encontrado #include

1

Básicamente, solo necesita obtener una cadena de herramientas que sea compatible con las nuevas funciones. En macosx eso sería GCC o clang ++. Es posible que necesite descargar/compilar una versión particular si es necesario (es decir, si la característica que desea probar no está en un paquete de compilador preinstalado, pero está disponible en el repositorio).

He descargado y compilado la última troncal de clang ++ de subversion para hacer algunas pruebas, e instalé g ++ 4.6 con macports en Snow Leopard. Recuerdo que tuve algunos problemas con la configuración del entorno, pero no recuerdo exactamente cuáles de los compiladores me dieron problemas o cómo los resolví. Google es tu amigo :)

1

Si ha instalado homebrew, desde this article, a sólo dos pasos:

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