$ macdeployqt <appname>.app/
で、必要なライブラリを拾って集めてくれるのですがQtQuick 2.0用のインポートライブラリが不足してしまいます。
これを入れればQtQuickアプリとしての最低限HelloWorldが動く内容になります。
追加するにはWindowsやLinuxのようにただコピーするだけではダメなので「otool」と「install_name_tool」を使って手を加えます。
それでは、「QtQuick.2/libqtquick2plugin.dylib」を追加する手順です。
Qt 5.0.2での例です。
$ ~/Qt5.0.2/5.0.2/clang_64/bin/macdeployqt HelloWorld.app/
$ mkdir HelloWorld.app/Contents/qml
$ cp -R ~/Qt5.0.2/5.0.2/clang_64/qml/QtQuick.2 HelloWorld.app/Contents/qml
$ otool -L HelloWorld.app/Contents/qml/QtQuick.2/libqtquick2plugin.dylib | grep Qt
HelloWorld.app/Contents/qml/QtQuick.2/libqtquick2plugin.dylib:
/Users/iori/Qt5.0.2/5.0.2/clang_64/lib/QtQuick.framework/Versions/5/QtQuick (compatibility version 5.0.0, current version 5.0.2)
/Users/iori/Qt5.0.2/5.0.2/clang_64/lib/QtQml.framework/Versions/5/QtQml (compatibility version 5.0.0, current version 5.0.2)
/Users/iori/Qt5.0.2/5.0.2/clang_64/lib/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.0.0, current version 5.0.2)
/Users/iori/Qt5.0.2/5.0.2/clang_64/lib/QtCore.framework/Versions/5/QtCore (compatibility version 5.0.0, current version 5.0.2)
/Users/iori/Qt5.0.2/5.0.2/clang_64/lib/QtGui.framework/Versions/5/QtGui (compatibility version 5.0.0, current version 5.0.2)
ここまでで、QtQuickとQtQmlとQtNetworkとQtCoreとQtGuiを参照していることがわかります。
ただし、絶対パスで指定されているので、intall_name_toolを5回実行して1つずつ参照先を実行ファイルからの相対パスへ書き換えます。
で、面倒なので以下のスクリプトを使うと少し楽になります。
#!/bin/bash QTPATH=/Users/iori/Qt5.0.2/5.0.2/clang_64/ LIBPATH=$1 CMD="install_name_tool -change" ABSPATH1=lib/ ABSPATH2=.framework/Versions/5/ RELPATH1=@executable_path/../Frameworks/ RELPATH2=.framework/Versions/5/ count=1 for arg in $@ do if [ $count -gt 1 ] ; then $CMD ${QTPATH}${ABSPATH1}${arg}${ABSPATH2}${arg} ${RELPATH1}${arg}${RELPATH2}${arg} $LIBPATH fi count=$(($count+1)) done
$ macdeployhelper.sh HelloWorld.app/Contents/qml/QtQuick.2/libqtquick2plugin.dylib QtQuick QtQml QtNetwork QtCore QtGui
で、下のように書き換わります。
$ otool -L HelloWorld.app/Contents/qml/QtQuick.2/libqtquick2plugin.dylib | grep Qt
HelloWorld.app/Contents/qml/QtQuick.2/libqtquick2plugin.dylib:
@executable_path/../Frameworks/QtQuick.framework/Versions/5/QtQuick (compatibility version 5.0.0, current version 5.0.2)
@executable_path/../Frameworks/QtQml.framework/Versions/5/QtQml (compatibility version 5.0.0, current version 5.0.2)
@executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.0.0, current version 5.0.2)
@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore (compatibility version 5.0.0, current version 5.0.2)
@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui (compatibility version 5.0.0, current version 5.0.2)
あとは、がんばって必要なプラグインとかを調べる感じです。
コメント