OSX & Qt : bad issues
-
Hi,
I have updated my Qt installation (with the update tool) and now I can't build my application on OSX (the same source code build on Linux).
I have tried with :
- 5.0.2 clang 64b
- 5.1.0 clang 64b
- 5.1.1 clang 64b
- 5.2.0 clang 64b
- 5.2.1 clang 64b
Errors are not the same (but always about Qt header files), so I give you the bad issue only with the 5.2.1 :
@
In file included from sources/main/main.cpp:2:
In file included from ../../../../../../../../../../Qt/5.2.1/clang_64/lib/QtWidgets.framework/Versions/5/Headers/QApplication:1:
In file included from ../../../../../../../../../../Qt/5.2.1/clang_64/lib/QtWidgets.framework/Versions/5/Headers/qapplication.h:56:
In file included from /Users/peb/Qt/5.2.1/clang_64/lib/QtGui.framework/Headers/qguiapplication.h:47:
/Users/peb/Qt/5.2.1/clang_64/lib/QtGui.framework/Headers/qinputmethod.h:89:5: error: unknown type name 'QLocale'
QLocale locale() const;
^
/Users/peb/Qt/5.2.1/clang_64/lib/QtGui.framework/Headers/qinputmethod.h:96:21: error: no type named 'InputMethodQueries' in namespace 'Qt'; did you mean 'InputMethodQuery'?
void update(Qt::InputMethodQueries queries);
~~~~~~~~~~~~~^
InputMethodQuery
/usr/local/include/QtCore/qnamespace.h:1541:10: note: 'InputMethodQuery' declared here
enum InputMethodQuery {
^
In file included from sources/main/main.cpp:2:
In file included from ../../../../../../../../../../Qt/5.2.1/clang_64/lib/QtWidgets.framework/Versions/5/Headers/QApplication:1:
In file included from ../../../../../../../../../../Qt/5.2.1/clang_64/lib/QtWidgets.framework/Versions/5/Headers/qapplication.h:56:
/Users/peb/Qt/5.2.1/clang_64/lib/QtGui.framework/Headers/qguiapplication.h:92:12: error: unknown type name 'QWindowList'
static QWindowList allWindows();
^
/Users/peb/Qt/5.2.1/clang_64/lib/QtGui.framework/Headers/qguiapplication.h:93:12: error: unknown type name 'QWindowList'
static QWindowList topLevelWindows();
^
/Users/peb/Qt/5.2.1/clang_64/lib/QtGui.framework/Headers/qguiapplication.h:145:16: error: no type named 'ApplicationState' in namespace 'Qt'
static Qt::ApplicationState applicationState();
~~~~^
/Users/peb/Qt/5.2.1/clang_64/lib/QtGui.framework/Headers/qguiapplication.h:165:38: error: no type named 'ApplicationState' in namespace 'Qt'
void applicationStateChanged(Qt::ApplicationState state);
~~~~^
In file included from sources/main/main.cpp:2:
In file included from ../../../../../../../../../../Qt/5.2.1/clang_64/lib/QtWidgets.framework/Versions/5/Headers/QApplication:1:
../../../../../../../../../../Qt/5.2.1/clang_64/lib/QtWidgets.framework/Versions/5/Headers/qapplication.h:76:24: error: variable has incomplete type 'class Q_WIDGETS_EXPORT'
class Q_WIDGETS_EXPORT QApplication : public QGuiApplication
^
../../../../../../../../../../Qt/5.2.1/clang_64/lib/QtWidgets.framework/Versions/5/Headers/qapplication.h:76:7: note: forward declaration of 'Q_WIDGETS_EXPORT'
class Q_WIDGETS_EXPORT QApplication : public QGuiApplication
^
../../../../../../../../../../Qt/5.2.1/clang_64/lib/QtWidgets.framework/Versions/5/Headers/qapplication.h:76:37: error: expected ';' after top level declarator
class Q_WIDGETS_EXPORT QApplication : public QGuiApplication
^
;
../../../../../../../../../../Qt/5.2.1/clang_64/lib/QtWidgets.framework/Versions/5/Headers/qapplication.h:76:39: error: expected unqualified-id
class Q_WIDGETS_EXPORT QApplication : public QGuiApplication
^
../../../../../../../../../../Qt/5.2.1/clang_64/lib/QtWidgets.framework/Versions/5/Headers/qapplication.h:111:24: error: token is not a valid binary operator in a preprocessor subexpression
#if QT_DEPRECATED_SINCE(5, 0)
~~~~~~~~~~~~~~~~~~~^
../../../../../../../../../../Qt/5.2.1/clang_64/lib/QtWidgets.framework/Versions/5/Headers/qapplication.h:151:24: error: token is not a valid binary operator in a preprocessor subexpression
#if QT_DEPRECATED_SINCE(5, 0)
~~~~~~~~~~~~~~~~~~~^
../../../../../../../../../../Qt/5.2.1/clang_64/lib/QtWidgets.framework/Versions/5/Headers/qapplication.h:181:24: error: token is not a valid binary operator in a preprocessor subexpression
#if QT_DEPRECATED_SINCE(5, 0)
~~~~~~~~~~~~~~~~~~~^
...
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make: *** [out/obj/main.o] Error 1
01:39:30: Le processus "/usr/bin/make" s'est terminé avec le code 2.
Erreur lors de la compilation/déploiement du projet camana4 (kit : Desktop Qt 5.2.1 clang 64bit)
Lors de l'exécution de l'étape "Make"
@I have seen an other post about OSX and Qt problems (http://qt-project.org/forums/viewthread/41862/), but me, I have installed Qt with the official installer and I know that I can build my source code on Linux (with Qt 5.x).
This update was a disaster... And I don't speak about the new QtCreator 3.1.0 on OSX... really unusable, too many bugs... :(
-
Hi,
thx for your help.
I tried to create new empty Qt Widgets app, it works fine.
When you say that some parts of my Qt is still from 4.x, you speak about my Qt installation or my Qt application?
Because I can build my application with Qt 5.x on Linux and like you can see in the output compilation, there's only Qt 5.2.1 reference (./../../../../../../../../../Qt/5.2.1/ ...)
-
Hmmm, since building a new Widgets app is ok, then it might be some stuff in your Qt application (like include files) that worked fine in Qt4 and works fine in Qt5 for Linux but not in Qt5 for OSX.
Did you update your app from Qt4 to Qt5 on Linux and then copied it to OSX, or did you copy first?
-
The source code of my application is into a shared folder between OSX and the Linux VM, so it's the same code anytime.
My application was "designed" with Qt5, but I have also planned support for Qt4, like is recommended by the Qt team.
I'll study include files used by my application like you said, maybe I could find more informations.
-
Using a shared folder saves time, but it might be a danger there.
Reason is, while the .cpp, .h and .pro files are standard and shareable, the .pro.user file contains machine specific stuff like build and configuration directories, i.e. on OSX you are /Users/username/... and in Linux in /home/username/... -
Interesting error, I looked again at the errors you got, and it for sure it's something about Qt's .h files not in sync on OSX (for example, the applicationState() function that's flagged as unknown is new for Qt 5.2),
Just guessing, maybe something isn't kosher with the file permissions in the shared folder? BTW, are you using shadow builds?