I’ve tried to change a project that just runs/compiles fine with Qt4.8.x (gcc and clang) to Qt5.0.x (tried clang 5.0.1 and clang 5.0.2).
Checked for changes to .PRO file from
http://qt-project.org/wiki/Transition_from_Qt_4.x_to_Qt5
and used the fixqt4headers.pl script, which didn’t find any includes that needed a change.
On compiling I receveive an error from one of the qmake generated moc files:
clang++ -c -pipe -mmacosx-version-min=10.6 -g -gdwarf-2 -Wall -W -fPIE -DHC_PROGRAMVERSION=\"0.1.0\" -DHC_GITHASH=\"9f49f3a1ed09e462b1051e790e3898fa57467550\" -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../../Qt5.0.2/5.0.2/clang_64/mkspecs/macx-clang -I../../../Dropbox/__private__/Qt/SolMan -I../../../devtools/taglib-bin/include/taglib -I../../../devtools/boost_1_53_0 -I../../../Qt5.0.2/5.0.2/clang_64/include -I../../../Qt5.0.2/5.0.2/clang_64/include/QtWidgets -I../../../Qt5.0.2/5.0.2/clang_64/lib/QtWidgets.framework/Versions/5/Headers -I../../../Qt5.0.2/5.0.2/clang_64/include/QtGui -I../../../Qt5.0.2/5.0.2/clang_64/lib/QtGui.framework/Versions/5/Headers -I../../../Qt5.0.2/5.0.2/clang_64/include/QtCore -I../../../Qt5.0.2/5.0.2/clang_64/lib/QtCore.framework/Versions/5/Headers -I. -I/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers -I/System/Library/Frameworks/AGL.framework/Headers -I. -I. -o moc_itunesconnector.o moc_itunesconnector.cpp
In file included from moc_itunesconnector.cpp:9:
In file included from ./../../../Dropbox/__private__/Qt/SolMan/itunesconnector.h:4:
In file included from ../../../Qt5.0.2/5.0.2/clang_64/include/QtCore/QObject:1:
In file included from ../../../Qt5.0.2/5.0.2/clang_64/include/QtCore/qobject.h:55:
../../../Qt5.0.2/5.0.2/clang_64/include/QtCore/qmetatype.h:642:5: error: implicit instantiation of undefined template 'QStaticAssertFailure<false>'
Q_STATIC_ASSERT_X(QMetaTypeId2<T>::Defined, "Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt's meta-object system");
^
../../../Qt5.0.2/5.0.2/clang_64/include/QtCore/qglobal.h:642:47: note: expanded from macro 'Q_STATIC_ASSERT_X'
#define Q_STATIC_ASSERT_X(Condition, Message) Q_STATIC_ASSERT(Condition)
^
../../../Qt5.0.2/5.0.2/clang_64/include/QtCore/qglobal.h:641:76: note: expanded from macro 'Q_STATIC_ASSERT'
enum {Q_STATIC_ASSERT_PRIVATE_JOIN(q_static_assert_result, __LINE__) = sizeof(QStaticAssertFailure<!!(Condition)>)}
^
../../../Qt5.0.2/5.0.2/clang_64/include/QtCore/qmetatype.h:656:12: note: in instantiation of function template specialization 'qMetaTypeId<QList<QUrl> *>' requested here
return qMetaTypeId(dummy);
^
moc_itunesconnector.cpp:137:50: note: in instantiation of function template specialization 'qRegisterMetaType<QList<QUrl> *>' requested here
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QList<QUrl>* >(); break;
^
../../../Qt5.0.2/5.0.2/clang_64/include/QtCore/qglobal.h:635:28: note: template is declared here
template <bool Test> class QStaticAssertFailure;
^
In file included from moc_itunesconnector.cpp:9:
In file included from ./../../../Dropbox/__private__/Qt/SolMan/itunesconnector.h:4:
In file included from ../../../Qt5.0.2/5.0.2/clang_64/include/QtCore/QObject:1:
In file included from ../../../Qt5.0.2/5.0.2/clang_64/include/QtCore/qobject.h:55:
../../../Qt5.0.2/5.0.2/clang_64/include/QtCore/qmetatype.h:534:82: error: no member named 'qt_metatype_id' in 'QMetaTypeId<QList<QUrl> *>'
static inline Q_DECL_CONSTEXPR int qt_metatype_id() { return QMetaTypeId<T>::qt_metatype_id(); }
~~~~~~~~~~~~~~~~^
../../../Qt5.0.2/5.0.2/clang_64/include/QtCore/qmetatype.h:643:29: note: in instantiation of member function 'QMetaTypeId2<QList<QUrl> *>::qt_metatype_id' requested here
return QMetaTypeId2<T>::qt_metatype_id();
^
../../../Qt5.0.2/5.0.2/clang_64/include/QtCore/qmetatype.h:656:12: note: in instantiation of function template specialization 'qMetaTypeId<QList<QUrl> *>' requested here
return qMetaTypeId(dummy);
^
moc_itunesconnector.cpp:137:50: note: in instantiation of function template specialization 'qRegisterMetaType<QList<QUrl> *>' requested here
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QList<QUrl>* >(); break;
^
2 errors generated.
make: *** [moc_itunesconnector.o] Error 1
21:40:53: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project SolMan (kit: Qt 5.0.2 Desktop clang 64bit)
When executing step 'Make'
The build directory was completely empty before compiling, no left traces from 4.8.x compiles.
What else do I need to change for a successful compile? And yes, QList and QUrl are included.
↧