$ 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つずつ参照先を実行ファイルからの相対パスへ書き換えます。
で、面倒なので以下のスクリプトを使うと少し楽になります。
01.
#!/bin/bash
02.
03.
QTPATH=/Users/iori/Qt5.0.2/5.0.2/clang_64/
04.
LIBPATH=$1
05.
CMD=
"install_name_tool -change"
06.
ABSPATH1=lib/
07.
ABSPATH2=.framework/Versions/5/
08.
RELPATH1=@executable_path/../Frameworks/
09.
RELPATH2=.framework/Versions/5/
10.
11.
count=1
12.
for
arg
in
$@
13.
do
14.
if
[ $count -gt 1 ] ; then
15.
$CMD ${QTPATH}${ABSPATH1}${arg}${ABSPATH2}${arg} ${RELPATH1}${arg}${RELPATH2}${arg} $LIBPATH
16.
fi
17.
count=$(($count+1))
18.
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)
あとは、がんばって必要なプラグインとかを調べる感じです。
コメント