2012-08-01 11 views
5

Recientemente actualicé mi OSX a un león de montaña y desde entonces no puedo compilar mi proyecto utilizando Qt Creator. Consigo montón de errores como el siguiente:El sistema de compilación de QtCreator se rompe después de la actualización de OSX

/Users/user/codes/lib/io/xdmfWriter.cpp:63: error: explicit instantiation of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]' but no definition available

/Users/user/codes/lib/io/xdmfWriter.cpp:-1: In instantiation of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]':

/Users/user/codes/lib/io/xdmfWriter.cpp:63: instantiated from here

// xdmfWriter.cpp -- line 63: 
gridName << xdmfName_ << "." << timeStep; 

gridName es un objeto std::ostringstream y xdmfName_ es una variable std::string declarado como un miembro privado de la xdmfWriter clase e inicializado en el constructor de la clase. No tuve este problema antes ... ¿Alguna idea?

Respuesta

6

Esto se puede solucionar mediante la adición de un c_str() como en:

gridName << xdmfName_.c_str() << "." << timeStep; 

Sin embargo, esta no es una solución permanente.

Actualización: he encontrado la solución en https://web.archive.org/web/20140809210004/http://qt-project.org/forums/viewthread/19106/P15

Es necesario cambiar -mmacosx-version-min=10.5 en $QTDIR/mkspecs/common/g++-macx.conf a -mmacosx-version-min=10.7. Esto es porque los SDK para 10.5 o 10.6 no están incluidos en Mountain Lion y XCode 4.4.

+0

Ugh ... Estoy un poco atrapado en este ... ¿dónde QT volca todo eso con una instalación estándar? –

+1

Puede ejecutar 'qmake -v' para obtener la ubicación de su directorio qt, para mí eso es'/usr/local/Cellar/qt/4.8.4/lib'. El directorio 'mkspecs' estará entonces un nivel por encima de eso, o para mi ejemplo,'/usr/local/Cellar/qt/4.8.4/mkspecs'. – sordid

2

Suena como si utilizo el Clang cadena de herramientas (que obliga a clang++ en lugar de llvm-g++) no tengo este problema ...

+0

¿cómo hiciste esto? alguna opción en QT Creator u otra cosa? –

+0

@SamJarman Depende de la versión de QtCreator. Antes estaba en la versión de Qt> toolchain. Con el nuevo lanzamiento (2.6 supongo) todo se cambió a "kits" ... – GradGuy

6

He intentado cambiar el g ++ - macx.conf fila pero todavía recibía los errores. Encontré que usando:

QMAKE_CXXFLAGS += -fpermissive 

en mi archivo pro funcionó.

+0

Esta es la respuesta correcta. Me ayudó también. –

+0

intentado, funciona, gracias :) – destan

Cuestiones relacionadas