QT 5.1 Deployment on mac OS X, macdeployqt does not change a links to qt libs inside application
-
OK,
the problem is in linking path - take a look here:
/Users/username/Qt5.1.0//5.1.0/clang_64/lib/QtNetwork.framework/Versions/5/QtNetwork
Do you see a double slash Qt5.1.0//5.1.0 - the thing is that when macdeployqt runs install_name_tool - it pass path to QT lib with one slash - but EXE linked by path with two slashes
As a result install_name_tool looking for a path with one slash, can't find that inside EXE - so paths stays unchanged.
I've changed links manually, after you build your program, you need to change links inside exe to a right ones
@install_name_tool -change /Users/username/Qt5.1.0//5.1.0/clang_64/lib/QtQuick.framework/Versions/5/QtQuick /Users/username/Qt5.1.0/5.1.0/clang_64/lib/QtQuick.framework/Versions/5/QtQuick <YourExecutable>@
After this workaround macdeployqt has changed all links inside exe to a relative ones.
The same problem on "Stackoverflow":http://stackoverflow.com/questions/17475788/qt-5-1-and-mac-bug-making-macdeployqt-not-working-properly
But app became broken for me, I've add all my QML and Images files to resources, and now, after I ran macdeployqt - I see next error in the qdb:
bq. QQmlApplicationEngine failed to load component
qrc:/qml/main.qml:-1 File not foundSo after I changed a links, Resources which were build into Exe became somehow unavailable, does anyone know any way to fix that?
-
Is this recorded as a bug in the respective website?
-
Yep, I have reported bugs to QT:
-
I try the solution posted on stack overflow, but the program still crash
The message of gdb
QQmlApplicationEngine failed to load component
qrc:/qml/colorCorrection/mainDesktop.qml:4 module "QtQuick.Layouts" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:2 module "QtQuick.Controls" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:1 module "QtQuick" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:3 module "QtQuick.Dialogs" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:4 module "QtQuick.Layouts" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:2 module "QtQuick.Controls" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:1 module "QtQuick" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:3 module "QtQuick.Dialogs" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:4 module "QtQuick.Layouts" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:2 module "QtQuick.Controls" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:1 module "QtQuick" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:3 module "QtQuick.Dialogs" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:4 module "QtQuick.Layouts" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:2 module "QtQuick.Controls" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:1 module "QtQuick" is not installed
qrc:/qml/colorCorrection/mainDesktop.qml:3 module "QtQuick.Dialogs" is not installed -
miks131 thanks.Maybe Qt5 really not as stable as Qt4
I use Qt4 9 months, encountered one bug
shift to Qt5 about 3 months ago but already encountered 4~5 bugs
I can understand why there are many people don't want to shift to Qt5 yetI don't know I should wait for the bug fix or try to find some workaround for this bug
it may take more than one day to find out a workable ad-hoc solution. -
Take a look on this link(on the last answer of stackOverflow)
"deploy Qt5 apps to mac":http://www.stringcat.com/company_blog/2013/07/04/failed-to-load-platform-cocoa/Pretty complicated procedures, I am very new to mac and very surprise
that deploy third parties dylib on mac could be so complicated, do anyone
know what kind of benefits or reasons let mac os become so hard to
deploy 3rd parties dll?Deal with those dependencies make me frustration. -
I am sure the QtQuick Frameworks already copied to the bundle
But the program can't find any components related to QtQuick control
QtQuick control is under another module?Ah, find out the problem, the QtQuick control, layout and dialog are plugins under other folders
The script do change the path of qml folder
@for F infind $QTDIR/lib $QTDIR/plugins $QTDIR/qml -perm 755 -type f
@
But the macdeploy do not copy and configure the id and change the reference path of the dll
I guess that despite of the bug, macdeploy do not support QtQuick control and QtQuick dialog yet
or this is another bug of Qt5.1? -
As far as I can see - it does not. Currently I'm struggling with QtQuick deployment. I got an error -
@module "QtQuick" is not installed@
I copied QtQuick and QtQuick.2 folders to app bundle, and added path to it, by using AddImportPath function inside my code. But anyway - it is not flying at the moment :/
-
[quote author="miks131" date="1373878229"]As far as I can see - it does not. Currently I'm struggling with QtQuick deployment. I got an error -
@module "QtQuick" is not installed@
I copied QtQuick and QtQuick.2 folders to app bundle, and added path to it, by using AddImportPath function inside my code. But anyway - it is not flying at the moment :/ [/quote]
I have the same problem too, and I also copy the QtQuick.2 folders and
part of the QtQuick folders to app bundle.Can't find a single success
example of deploying QtQuick2 apps on mac. -
Yep, another thread with the same "discussion ":http://qt-project.org/forums/viewthread/25903/
-
Finally managed to get it work, checkout this "answer":http://stackoverflow.com/a/17591828/2370437
-
miks131, thanks for your answer, thanks for macdeploy of MaximAlien, and the script from lasconic, they work like magic.
Have you add you answer to the bug report you mention before?Hope your answer could help the developers solve this annoying bug, never
though that deploy a simple app on mac is so painful, it is a real pain without
the help of macdeployqt.After peeking into the bundle, I find out the folder of QtQuick.2 is place
at the same folder as the exe, maybe this is why the project can't find
the dylib before, because I put all of the plugins into the PlugIns folder -
The important think here is that a solution MUST be included in a next version of Qt SDK as soon as possible! Until then, I will stick to Qt 4.8.5, and I would guess that I will not be the only one! ;-)
-
Thanks, miks131
I try your solution on a bigger project, the macdeployqt of MaximAlien provided do not
copy the QtQuick folder into the bundle.Any possible reason would
stop it copy the QtQuick folder into the bundle?I find out it is related to the qmldir, what is the correct way to set it?
My folder layout
"layout":http://www.flickr.com/photos/92283971@N04/9292932353/
-
I specify it like this
@macdeployqt.app/Contents/MacOS/macdeployqt/
/Users/Qt/program/experiment_apps_and_libs/qmlTest2/qmlTest2.app/
-qmldir=/Users/Qt/program/experiment_apps_and_libs/qmlTest2/qml/colorCorrection/
-verbose=3@I update the layout of my folder on my previous post
-
bq. I will stick to Qt 4.8.5, and I would guess that I will not be the only one! ;-)
I have the same opinion as yours, using Qt5.1 and QtQuick2 on a fun project, I would not recommend my colleague to pick Qt5.1 before it is stable enough.
-
Well, I can see only one reason - qml files inside colorCorrection folder does not have any import statements, or it is empty.
Can't guess other reason.
I dont think that size of project matters, I have quite a few files inside qml dir, and it works fine for me.