2012-08-01 6 views
5

Ich habe vor kurzem mein OSX zu Berglöwe aktualisiert und seitdem kann ich mein Projekt nicht mehr mit Qt Creator kompilieren. Ich erhalte Bündel von Fehlern wie folgt aus:QtCreator Build-System ist nach OSX-Upgrade defekt

/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 ein std::ostringstream Objekt ist und xdmfName_ ist eine std::string Variable als privates Mitglied der xdmfWriter erklärt Klasse und initialisiert im Klassenkonstruktor. Ich hatte dieses Problem vorher nicht ... Irgendwelche Ideen?

Antwort

6

Dies kann durch Zugabe eines c_str() wie in festgesetzt:

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

Dies ist jedoch keine dauerhafte Lösung.

Update: fand ich die Lösung in https://web.archive.org/web/20140809210004/http://qt-project.org/forums/viewthread/19106/P15

Sie müssen -mmacosx-version-min=10.5 in $QTDIR/mkspecs/common/g++-macx.conf zu -mmacosx-version-min=10.7 ändern. Dies liegt daran, dass SDKs für 10.5 oder 10.6 nicht in Mountain Lion und XCode 4.4 enthalten sind.

+0

Ugh ... Ich bin irgendwie auf diesem .. wo ist QT dump all diese Sachen mit einer Standardinstallation? –

+1

Sie können 'qmake -v' ausführen, um den Speicherort für Ihr qt-Verzeichnis zu erhalten, für mich ist das'/usr/local/Cellar/qt/4.8.4/lib'. Das 'mkspecs'-Verzeichnis wird dann eine Ebene darüber liegen, oder für mein Beispiel'/usr/local/Cellar/qt/4.8.4/mkspecs'. – sordid

2

Klingt wie wenn ich die Clang Werkzeugkette (die clang++ statt llvm-g++ zwingt) ich dieses Problem nicht haben ...

+0

Wie hast du das gemacht? eine Option in QT Creator oder etwas anderes? –

+0

@SamJarman Hängt von der QtCreator Version ab. Vorher war es in der Qt-Version> Toolchain. Mit der neuen Version (2.6 ich denke) wird die ganze Sache in "Kits" geändert ... – GradGuy

6

Ich habe versucht, die g ++ - macx.conf fila zu ändern, aber ich bekam immer noch die Fehler. Ich fand, dass mit:

QMAKE_CXXFLAGS += -fpermissive 

auf meiner Profildatei tat den Trick.

+0

Das ist die richtige Antwort. Hat mir auch geholfen. –

+0

versucht, funktioniert, danke :) – destan