Dec 06, 2014

Qt for WinRT のインストール・セットアップ

この投稿はQt Advent Calendar 2014 - Qiita の7日目の記事です。

ということで Qt for WinRT のことについて書きたいと思います。といってもインストール・セットアップに関する、さわりの部分です。なんか他の人の記事に比べて手抜きじゃないのか?と思われるかもしれませんが気のせいですよ?

詳しいことはドキュメント見てくださいよ、ってことでリンク置いときますねw
Qt for WinRT http://qt-project.org/doc/qt-5/winrt-support.html

WinRT版って?

さて、ドキュメントに書かれてあることを上からざっと追っていくわけですが、まず WinRT版とは何ぞや?というところから。

Windows 8 以降 Windows のアプリはざっくり2種類に分けられます。1つは従来通りのデスクトップアプリですね。これは今まで通りの Qt インストーラー、例えば Qt Online Installer でインストールできるやつ。Windows 7 以前の環境でも動かせるバイナリ。もう1つは Modern UI アプリ。ちょっと前はメトロアプリって言ってたやつ。Windows Store 経由での配布はこの形式です。あーあの全画面の使えな(ry... Windows 10 からはフリップや全画面以外にも従来のようなサイズ可変なウィンドウ表示もできるから(震え声

WinRT版はこの後者のタイプのアプリを作るものです。なので当然 RT版の Windows上でも動きます。自分はLumia 2520Surface のような RT版は持ってないので実際に試したことないんですが、試したいですね...またそれだけではなく、な、なんと!Windows Phone でも動くアプリも作れます。当然 Windows 版とは画面サイズが違うのでまるっきり同じコードとはいきませんが、UIまわりを多少気にする程度で他のロジックまわりは共有できるし、当然そのあたりは従来の Windows 版アプリはもちろん、Linux 版やえっと「ま」なんとかっていうBSDっぽいOSや、Android やあとなんかあいなんとかってスマフォ?の上で動くアプリとも共有できるわけで、Qt のクロスプラットフォーム万歳ワールドに仲間入りできるわけです。

もうそろそろ終わっていい分量書いたかな?え?まだ?...

前提条件

では開発環境のセットアップをするわけですが、その前に必要なものをいくつか。

Modern UIアプリを作って実行するので Windows 8 (or 8.1)が必要です。Windows 10 Technical Preview なんかでも大丈夫です。他に実機として Windows Phone 8.0(or 8.1)があるといいですね。

ソフトの方は、Visual Studio 2013 が必要です。いまなら Community 2013 という無料版が手に入ります。以前は Visual Studio Express という無料版の Visual Studio を使ってた人もいるかと思いますが、Express の場合、普通のデスクトップ用やウェブ用や Modern UI用と複数のEditionに分かれていたり、そもそもライセンス的には同一PCに複数の Express Edition をインストールしてはダメだったり、ちょと残念な状況でした。が、Community 2013 からは有料版の Visual Studio Pro バージョンと機能的には同等になっているし、2012のときのように別途 Windows Phone SDK をインストールする必要もなく、Community 2013 の最初のインストール時に全部インストールすることが可能です。Visual C++ 2012 Compilerも入ってますので、Visual Studio 2012 自体アンインストールできます!

このほかに本丸の Qt for WinRT のインストーラーが必要です。Download Qt のページにアクセスして View All Downloads のリンクをクリックして、ざーっとしたの方までスクロールして、Qt 5.4.0 RC のリンクをクリックします。途中に Qt 5.3.2 for Windows RT 32-bit というのもあるんですが、このバージョンには 、Qt Quick アプリを Windows Phone で実行すると一部の機種では真っ白画面になるというバグ[1]があるので、それが修正されてる 5.4.0 を使うのがいいかと思います。Windows Phone版はな んて知らん!って人は 5.3.2でもいいかもしれませんけど...

5.4.0 RC パッケージの中に qt-opensource-windows-x86-winrt-5.4.0-rc.exe というのがあるので、これをダウンロードします。

[1] Windows Phone: Some devices fail to render Qt Quick with depth/stencil buffer

セットアップ

Visual Studio Community 2013 Setup必要なものがそろったと思うので、もろもろセットアップします。まずは Visual Studio から。最初に、どのコンポーネントをインストールするか?と質問されるのでケチらず全部入れてくださいw 特に、"Tools for Maintaining Store Apps for Windows 8" を入れると Visual C++ 2012 Compiler がインストールされます。Qt 5.3.2 for Windows 版には複数のコンパイラーに対応したインストールパッケージがありますが、Visual Studio 2012 用の Qt 5.3.2 を使用しているのであればこれが必要になります。

Visual Studio (Community) 2013 のセットアップが終了したら起動して、New Project から Visual C# の Store Apps から何か適当なもの(Blank Appでもいい)を選んでビルド・実行して動作確認をしてください。えっと、このあたりの詳細は他のサイト参照してください(丸投げ)。

無事 Visual Studio のセットアップが終わったので、次に Qt for WinRTのセットアップをします。デフォルトのインストール先は C:\Qt\Qt5.4.0 になりますが、デスクトップ版 Qt 5.4.0 のインストールをしてるとすでにこのフォルダは使われているので、別の、例えば Qt5.4.0-winrt などに変更してインストールします。

QtCreatorが別途インストールされるんですが、WinRT のための設定などが自動で行われるので、あとから普段使ってる QtCreator の方に手動で設定すれば1つに統一できるかもですが、自分は面倒なので WinRT 用の QtCreator を使ってます。場所はC:\Qt5.4.0-winrt\Tools\QtCreator\bin の中です。

QtCreator を起動してちゃんと構築できてるか確認してみましょう。

  • メニューの Tools - Options...を選びます。
  • Build & Run のところをクリックして、Kits タブを確認します。
    黄色い△にびっくりマークついてるかもしれませんが、
    Qt 5.4.0 for Windows Phone arm MSVC2013 32bit 
    Qt 5.4.0 for Windows Phone x86 MSVC2013 32bit (Emulator)
    Qt 5.4.0 for Windows Runtime 64bit
    
    のようなエントリがあればオッケーです。上2つが Windows Phone 用、3番目のが Windows 8 の Moder UI 用です。

Qt Versions のタブにも同じように3つ分のエントリがあるでしょうか?Compilers タブに Microsoft Visual C++ Compiler 11.0 や 12.0 がありますか?11.0が Visual C++ 2012 で 12.0 が 2013 です。ややこしい。

さて、無事インストールできたでしょうか?

Modern UI アプリをビルドしてみる

Qt Widgets Application
QtCreator から New Project を選んで、まずは Qt Widgets Application を試してみましょう。

Select Kits
ウィザード画面で適当なプロジェクト名を入力して、Windows Phone や Windows Runtime といった Kit を選択します。それ以降の設定はデフォルトのままでオッケーです。プロジェクトが作成できたら、まずは Windows Runtime 版をためしましょう。

Qt 5.4.0 for Windows Runtime 64bit を選択して CTRL+R もしくは実行ボタンを押します。プロジェクトがビルドされ、自動でディプロイされ、実行されます。え?されない?

WinRT error
 

qt.winrtrunner: Unable to register package:
 "Error 0x80070020: Opening the package 
from location file:///C:/Program%20Files
%20(x86)/Microsoft%20SDKs/Windows/
v8.1/ExtensionSDKs/Microsoft.VCLibs/
12.0/AppX/Debug/x64/Microsoft.VCLibs.
x64.Debug.12.00.appx failed."
qt.winrtrunner: Failed to install package:
 "Microsoft.VCLibs.120.00.Debug"

のようなエラーが出てるかもしれません。

これは公式ドキュメントにもありますが VCLib debug framework を登録する必要があって、それがされてないと上記のようなエラーでます。なので PowerShell を起動して、下記を実行します(コマンド自体は1行です)。

> Add-AppxPackage 'C:\Program Files (x86)\
Microsoft SDKs\Windows\v8.1\ExtensionSDKs\
Microsoft.VCLibs\12.0\AppX\Debug\x64\
Microsoft.VCLibs.x64.Debug.12.00.appx'

無事登録が済んだら再度 CTRL+R もしくは実行ボタンを押して実行します。デフォルトでは空っぽの画面が表示されると思います(手元の Windows 8.1 では真っ白の、Windows 10 では真っ黒の画面...)。

Modern UI App
空っぽだとさすがに、ちゃんと動いてるのか?って気になる場合は、フォームになんかボタンとか適当に配置して再度実行してみてください。スタイルなども設定するとこんな感じになります。

ここまでできたらもう終わっていいかしら?

Qt Quick アプリをビルドしてみる

ふざけんな!って声が聞こえた気がしたのでもう少し頑張る。

ま、頑張るといっても、先ほどと同様に QtCreator のプロジェクト作成ウィザードで今度は Qt Quick Application を選択するだけなんだが。こちらも Kit としてWindows Phone や Windows Runtime を選ぶ以外はデフォルトのまま。ビルド・実行をすると今度はボタンが3つ並んだアプリが起動されると思う。左上の方のメニューからExit を選べがちゃんとアプリも終了するしすごいよね?w

Windows Phone アプリもビルドしてみる

持ってないから知らねーって人はここで終了です。ありがとうございました。
持ってないけど Emulator で動かしてみるかーって奇特な方こんにちは。
自分持ってるお、って人...なんで C#で書かないの?(こらこら...

さて、本題にもどって、先ほど作ったプロジェクトを使ってみましょう。

QtCreatorで Windows Phone 用の Kit を選択してきりかえます。実機つないで動かす人は arm の方、エミュレーターで試す人は x86 です。これまで同様 CTRL+R もしくは実行ボタンを押します。Windows Phone のロックの解除忘れないでくださいね。

もしくは

The maxmum number of developer applications on
this phone has reached. 
なんてエラーがでてたら、すでにディプロイ済みのテストアプリなどは削除しておいてください。

あと、QtCreator からディプロイしたあとアプリの起動に失敗するときがあります。既知のバグかどうか調べてません。

qt.winrtrunner: Failed to start the package: 0x81030136 ""

その場合は Windows Phone のアプリ一覧の中から今ディプロイしたアプリを一旦起動して戻るボタンを押して終了します。実は戻るボタン押してもアプリ終了しないんですけどw なので戻るボタンも押す必要なくて起動しっぱなしでも大丈夫です。この状態で再度 QtCreator から CTRL+R もしくは実行をします。ちゃんと新しくビルドされたものがディプロイされて今度はちゃんと起動できます。

Windows Phone App
本格的に終了する場合は、戻るボタンの長押しをしてタスクスイッチ?の画面から(x)を押して終了します。完全に終了してる状態からでもディプロイ後 QtCreatorから起動できるときもあってちょっと挙動がよくわからないです。

Gray
out
さて、何度かスタートボタン押してて気が付いたと思いますが、デバッグ 実行のボタンがグレーアウトされます。つまりステップ実行ができないんです。有効に する方法知ってる方ご連絡くださいm(__)m

まぁ基本開発中は Windows Runtime 版なりでデバッグして、Windows Phone版は単にビルドするだけ、であれば特に問題ないとは思いますが、どうしても Windows Phone使ってステップ実行したい、って場合もあるかと思います。そんなときは Visual Studio 使いましょう。

Visual Studioのプロジェクトに変換する

公式ドキュメントにもある通り qmake で変換します。コマンドプロンプトを起動して

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat
を実行してもろもろの環境変数をセットします。

Windows Phone 用の qmake にあるとこにパスを通します。

例えば既に他の Qt の qmake にパスが通ってる場合、

path > z.bat
とやって既存のパスを書き出して z.bat を編集して Qt のパスを C:\Qt\Qt5.4.0-winrt\5.4\winphone_arm\bin に変更します。 z.bat を実行してパスを書き換えます。 単に追加するだけなら
set path=%PATH%:C:\Qt\Qt5.4.0-winrt\5.4\winphone_arm\bin
のようにパスを追加します。

プロジェクトファイルのあるフォルダに移動するかフルパスで指定して

qmake -tp vc <your project>.pro "CONFIG+=windeployqt"
を実行します。最後の windeployqt をタイポしないように気を付けて。

プロジェクトのフォルダに .vcxproj というファイルが出来上がっ てると思うのでこれを Visual Studio 2013 で開きます。

break point
ビルドして実行すると、必要な dll などがプロジェクトのフォルダに自動でコピーされ、一緒にディプロイされます。うまくディプロイできれば Visual Studio からアプリが起動できると思います。あとはブレークポイントを設定すればステップ実行できるようになります。

以上ざっくりですが、Qt for WinRT のインストール・セットアップの紹介でした。明日は @Chironian さんの Qt5のビルド方法その1、です。Qtのビルドには時間もかかるしちょっとしたノウハウも必要だったりするので、どんな内容か楽しみですね!


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%36%2f%63%61%74%69%64%2f%33%32%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%36%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%39%65%34%37%64%62%39%30%37%30%30%31%30%61%30%65%31%39%62%39%31%38%65%31%33%36%37%39%63%38%62%35%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%61%38%37%30%64%61%64%65%33%32%35%33%35%36%65%39%39%66%37%65%32%33%32%33%30%62%31%31%38%35%66%32%22%3e %3c%2f%66%6f%72%6d%3e %20%20

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

Identity URL:

Trackbacks

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