Tengo algunos problemas con C++11 en Xcode

Soy un usuario de Mac OS X Lion que usa Xcode para C++ y parece que no hay actualizaciones disponibles para Xcode. Parece que no puedo compilar código exclusivo de C++ 11, pero por alguna razón, pensé que Apple había implementado C ++ 11 prácticamente. Y sí, tengo soporte para herramientas de línea de comandos.

Por otra parte, ese podría ser solo yo. Si es así, ¿hay algún tipo de IDE que admita C ++ 11 o alguna forma de actualizar?

preguntado el 03 de mayo de 12 a las 20:05

Xcode 4.2 se envía con clang y clang admite C++ 11 parcialmente. Puede cambiar a clang en las opciones de compilación. -

Puede usar Macports, envían todas las versiones más nuevas de gcc macports.org -

3 Respuestas

Uso Xcode y configuro las siguientes configuraciones:

Dialecto del lenguaje C++: C++11 o GNU++11

Biblioteca estándar de C++: libc++ (biblioteca estándar LLVM C++ con compatibilidad con C++11)

Versión Xcode: 4.3.2

Configuración del proyecto XCode

contestado el 03 de mayo de 12 a las 20:05

No olvide seleccionar también el compilador LLVM. - cabina

Tengo un problema con la vinculación de std lib. Si elijo libc++ (biblioteca estándar LLVM C++ con compatibilidad con C++11), el enlazador no puede vincular "std::string::find(char, unsigned long) const" y otros símbolos, si elijo libstc++ (biblioteca GNU C++ Standart) luego hay errores del compilador en los encabezados "cannot find ::std::move" . ¿Qué estoy haciendo mal? ¿Como puedo resolver esto? Gracias. - BergP

También necesitamos modificar el nombre del archivo de .m a .mm - Rigel Chen

Si usa Xcode 4.3, hay varias configuraciones de proyecto relevantes que necesita para usar las funciones de C++ 11. El primero es usar el compilador clang. Algo como

GCC_VERSION = com.apple.compilers.llvm.clang.1_0

en tu .xcconfig lo configurará, o puede usar la GUI.

A continuación, debe decirle a LLVM qué estándar de C++ usar:

CLANG_CXX_LANGUAGE_STANDARD = gnu++11

Esto hará que las características del lenguaje, como el rango basado en, los constructores delegados, etc., estén disponibles.

Finalmente, si desea utilizar las funciones STL de C++11 (como std::unordered_map) necesita usar libc++ STL:

CLANG_CXX_LIBRARY = libc++

contestado el 03 de mayo de 12 a las 20:05

Lo siento mucho, soy muy nuevo, pero ¿cómo hago exactamente eso? Aparentemente, esos son comandos para LLVM o algo por el estilo, pero realmente no sé qué hacer. - whoviano

Si no está utilizando archivos .xcconfig, puede seleccionar su archivo de proyecto en el inspector de Xcode y debería ver una lista de opciones similar a la que publicó Alexander. - cabina

En XCode 5 / opencv 2.4.9, puedo seleccionar:

Configuración de código X

Y se construye sin error. Si configuro libc ++ sin especificar el dialecto del idioma C ++, obtengo el mismo problema que OP

Respondido el 20 de junio de 20 a las 10:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.