Mar 10, 2014

Qt5.3 on Windows Phone

先日Qt5.3 alpha 版がリリースされた。
http://blog.qt.digia.com/blog/2014/02/27/qt-5-3-alpha-available/

このバージョンには WinRTとWindows Phone対応が含まれるということで Windows Phone版をビルドして試してみた。

用意するもの
・Windows 8(.1) と Visual Studio 2012 (Expressでも可だと思う)など、Windows Phoneアプリを開発する環境一式。アプリを実機で動かすにはデベロッパーアカウントの作成も必要だと思う。
・ソース。gitoriousからだと遅いので qt-users.jp を利用させていただきましたw(参考:http://qt5.jp/qt5-mirrors.html

まずは作業用フォルダにQtのソースダンロード。ダウンロードに必要なツール類やダウンロード方法などはこのページを参照。

ソース一式ダウンロードし終わったら、Developer Command Prompt for VS2012 を起動して、qtbase フォルダに移動。今回使ったのは dev ブランチ、だけど stable でもたぶん大丈夫だと思う。ここで以下の通り configure する。

configure -prefix C:\Qt\winphone-arm-msvc2012 
 -xplatform winphone-arm-msvc2012 -nomake tests -nomake examples
 -opensource -confirm-license

prefix は出来上がったバイナリのインストール先。自分は C:\Qt\winphone-arm-msvc2012 というフォルダにセットアップするようにしてみた。この prefix の代わりに -developer-build オプションを付けてビルドすると、そのフォルダの qtbase\以下にいろいろセットアップされることになる。Qt本体のデバッグをするならいちいち nmake install せずに済むので、そっちの方がいいのかな?まぁ今回はあまりそういうことするつもりなかったので prefix付けて nmake install した。

xplatform は winphone-arm-msvc2012 を指定することでクロスコンパイル環境を指示。

無事 configure が終わったら、nmake を実行してビルドすればいいんだが、このままだとどうやら後述する qwinrt.dll の読み込みに失敗するようなので下記の通りパッチを当てた。

 src/gui/kernel/qguiapplication.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 3953437..c443441 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -1003,7 +1003,7 @@ void QGuiApplicationPrivate::createPlatformIntegration()

     // Load the platform integration
     QString platformPluginPath = QLatin1String(qgetenv("QT_QPA_PLATFORM_PLUGIN_PATH"));
-
+     platformPluginPath = "appdata:/AppSetup/";

     QByteArray platformName;
#ifdef QT_QPA_DEFAULT_PLATFORM_NAME

このあと nmake を実行してビルド。prefix を指定してあるなら nmake install してインストール。環境ができあがったら、別途インストール済み(だよね?w)のQtCreatorなどでウィジェット使ったサンプルアプリを用意する。ちなみにこのアルファ版はまだQMLアプリは動かないらしい(まぁqtbaseしかビルドしてないしw)

先ほど使った Developer Command Prompt for VS2012 を使って、サンプルアプリのあるフォルダに移動して qmake -tp vc を実行しVCのプロジェクトファイルを作成する。

出来上がった .vcxproj ファイルをダブルクリックするなりで VS2012を起動。このときプロジェクトの中身を確認すると WMAppManifest.xml がリストアップされてない。このあたりはまったんだけど、このまま F5 押してビルドして実機にディプロイしようとすると下記のような画面がでる。

debug error

一旦 VC2012 を終了して .sln 保存して、再度 .vcxproj かこの .sln を開くと今度は WMAppManifest.xml やタイルアイコンファイルなども表示されるようになる。

ここで再度 F5 を押すと今度は下記のようなエラーが表示される。

deploy error

Configuration Managerを表示すると、下記のように Deploy のところのチェックは入ってないかもしれないので、そこにチェックを入れると先のエラーは解消される。

Configuration Manager

これで F5 を押してビルド・実行をしたとき、無事実機にディプロイされてデバッグができる...はずだが、これでは肝心の Qtのライブラリが組み込まれない。ということでプロジェクトにいくつか DLL を組み込んで、パッケージに含める必要がある。

null

上記のように、簡単なサンプルアプリの場合でも、Qt5Core, Qt5Gui の他に Qt5Widgets はもちろん d3dcompiler_qt.dll, libEGL.dll, libGLESv2.dll とプラグインフォルダの platforms にある qwinrt.dll が必要になる。デバッグ版はそれらのデバッグ版 DLL (名前の最後に d ってついてるやつ)が必要なる。また、単にプロジェクトに追加してもパッケージには含まれないので、プロパティーのContent のとこを True に変更する。

以上で下記のようにWP8の実機で動くはず(下記のアプリはスタイルを変更してあります)。

Qt5 on Windows Phone

Related Info.

Comments

No comments yet

Add Comments

※下記の単語・フレーズはコメントで使用できません。大文字・小文字は同一視します。
poker, backgammon, tramadol, casino, insurance, loans
JavaScript is required when you submit comment %20%20%3c%61%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%22%3e%3c%2f%61%3e %3c%66%6f%72%6d%20%6d%65%74%68%6f%64%3d%22%70%6f%73%74%22%20%61%63%74%69%6f%6e%3d%22%23%6e%75%63%6c%65%75%73%5f%63%66%22%3e %09%3c%64%69%76%20%63%6c%61%73%73%3d%22%63%6f%6d%6d%65%6e%74%66%6f%72%6d%22%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%61%63%74%69%6f%6e%22%20%76%61%6c%75%65%3d%22%61%64%64%63%6f%6d%6d%65%6e%74%22%20%2f%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%75%72%6c%22%20%76%61%6c%75%65%3d%22%68%74%74%70%3a%2f%2f%6b%69%6d%69%74%61%6b%65%62%6c%6f%67%2e%6e%65%74%2f%69%74%65%6d%2f%38%35%30%22%20%2f%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%69%74%65%6d%69%64%22%20%76%61%6c%75%65%3d%22%38%35%30%22%20%2f%3e %09%09 %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%62%6f%64%79%22%3eコメント%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%74%65%78%74%61%72%65%61%20%6e%61%6d%65%3d%22%62%6f%64%79%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%63%6f%6c%73%3d%22%34%30%22%20%72%6f%77%73%3d%22%31%30%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%62%6f%64%79%22%3e%3c%2f%74%65%78%74%61%72%65%61%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6e%61%6d%65%22%3eお名前%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%6e%61%6d%65%3d%22%75%73%65%72%22%20%73%69%7a%65%3d%22%34%30%22%20%6d%61%78%6c%65%6e%67%74%68%3d%22%34%30%22%20%76%61%6c%75%65%3d%22%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6e%61%6d%65%22%20%2f%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6d%61%69%6c%22%3eウェブサイト%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%6e%61%6d%65%3d%22%75%73%65%72%69%64%22%20%73%69%7a%65%3d%22%34%30%22%20%6d%61%78%6c%65%6e%67%74%68%3d%22%36%30%22%20%76%61%6c%75%65%3d%22%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6d%61%69%6c%22%20%2f%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%65%6d%61%69%6c%22%3eメール%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%6e%61%6d%65%3d%22%65%6d%61%69%6c%22%20%73%69%7a%65%3d%22%34%30%22%20%6d%61%78%6c%65%6e%67%74%68%3d%22%31%30%30%22%20%76%61%6c%75%65%3d%22%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%65%6d%61%69%6c%22%20%2f%3e %09%09 %09%09%3c%69%6e%70%75%74%20%74%79%70%65%3d%22%63%68%65%63%6b%62%6f%78%22%20%76%61%6c%75%65%3d%22%31%22%20%6e%61%6d%65%3d%22%72%65%6d%65%6d%62%65%72%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%72%65%6d%65%6d%62%65%72%22%20%20%2f%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%72%65%6d%65%6d%62%65%72%22%3e情報を記憶しておく%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%74%79%70%65%3d%22%73%75%62%6d%69%74%22%20%61%6c%74%3d%22コメントを追加%22%20%76%61%6c%75%65%3d%22コメントを追加%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%62%75%74%74%6f%6e%22%20%2f%3e %09%3c%2f%64%69%76%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%6e%70%5f%70%72%6f%74%65%63%74%62%79%6d%64%35%22%20%76%61%6c%75%65%3d%22%62%39%39%62%65%62%66%66%31%62%38%39%37%39%33%35%64%31%36%66%61%61%38%66%30%39%65%39%31%65%34%30%22%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%6e%70%5f%70%72%6f%74%65%63%74%62%79%6d%64%35%5f%68%61%73%68%22%20%76%61%6c%75%65%3d%22%63%66%38%64%66%62%38%35%34%32%30%65%34%61%39%36%65%35%35%37%34%34%31%61%35%35%30%32%61%63%33%37%22%3e %3c%2f%66%6f%72%6d%3e %20%20

OpenID を使ってログインすることができます。

Identity URL:

Trackbacks

トラックバック
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.
visitor stats