QT 5.1 Deployment on mac OS X, macdeployqt does not change a links to qt libs inside application
-
Take a look here
http://qt-project.org/doc/qt-5.0/qtdoc/deployment-mac.html
There is a description about rules macdeployqt works, at the end of page
bq. SQL driver plugins are deployed if the application uses the QtSql module.
-
OK, thanks for reminding me that! :-)
However, I also have the problem you reported in your original post! Let us hope that someone has a solution there. Meanwhile, I am installing Qt 4.8.5 and if the problem doen't exist there, I will use that (my application works fine with both Qt4 and Qt5).
-
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