C
Qt Quick Ultraliteツール
Qt Quick のUltraliteツールチェーンは、CMakeとQmlProjectの両方を基盤として構築されています。ビルドプロセスはCMakeの設定フェーズから始まり、このフェーズでは、アプリケーションのCMakeLists.txtおよび Qt Quick のUltraliteパッケージのCMakeファイルを使用して、ビルドファイルが準備されます。実際のビルドプロセスは、選択されたCMakeジェネレータによって異なります。
ビルドプロセスのデモ
Qt Quick Ultraliteのビルドプロセスは、Bluetooth経由で携帯電話に接続し、連絡先リストを取得するサンプルアプリケーションを用いて実演します。このプロジェクトには、以下のファイルが含まれています:
| ファイル | 説明 |
|---|---|
| Main.qml | メインアプリケーションのビューを定義します。 |
| QMLファイル | アプリケーションの UI を定義します。 |
| C++ソース | ListView など、ビジュアルアイテム用のカスタムデータ型を定義します。 |
| C/C++ ソースファイル | アプリケーションのロジックを定義します。 |
| main.cpp | main() を定義します。この関数は、Qul::Application を使用してQt Quick Ultralite を起動します。 |
| 画像 | アプリケーションで使用される画像アセット。 |
| 画像アプリケーションで使用される画像アセット。 | アプリケーションで使用されるフォントファイル。 |
| CMakeLists.txt | プロジェクトの設定ファイル。 |
| demo.qmlprojet | プロジェクトの設定ファイル。 |
次の図は、サンプルアプリケーションのビルドプロセスの概要を示しています:

Qt Quick Ultraliteツールを使用したコードの生成
Qt Quick Ultralite には、必要な追加コードを生成するツールが用意されています。詳細については、qmlprojectexporter ツール、qmlinterfacegenerator、qmltocpp、およびfontcompiler を参照してください。
qmlinterfacegenerator
qmlinterfacegenerator は、カスタム QML 要素用の C++ ヘッダーファイルを解析します。たとえば、QML とアプリケーションのビジネスロジック層との接続を実現するために、この処理が行われます。
qulrcc
Resource Compiler であるqulrccは、ソース画像から最適化された生データバッファを生成します。QmlProject のImageFiles.filesプロパティはこれらをビルドに追加し、その他のImageFilesプロパティを使用してリソースのプロパティを設定できます。
最適化の処理内容は、プラットフォームや設定によって異なります。例えば、最適化によって、色深度の低下、画像のアルファマップへの置換、大きな透明領域の削除、スウィズリングなどが行われる場合があります。
リソースの設定は、qmlprojectexporter ツールが生成する JSON ファイルとしてqulrccに渡されます。Resource Compiler は、リソースの説明を含む別の JSON ファイルを生成することで、利用可能なリソースに関する情報をqmltocpp に通知します。
qmltocpp
qmltocppツールは、以下の機能を提供します:
- QmlFiles.files で指定された qml ファイルから QML オブジェクトモデルを構築します。qmltocpp ツールの入力は以下の通りです:
- アプリケーションの QML コード。
- qmlinterfacegeneratorによって生成されたファイル。
- Qt Quick のQML要素またはコントロールに対応する、Qt Quick のUltraliteインターフェースファイル。例:Item.qml、Rectangle.qml、Image.qml、ListView.qml、PropertyAnimation.qml、Slider.qml、Button.qml。
- qulrcc によって生成されたリソース記述。
- これは、QML アプリケーションコードで使用されているグラフィックアセットを分析し、それらから最適化された生データバッファを生成します。 この例では、qmltocpp によってavatar.png が生成されます。最適化プロセスは、プラットフォーム、設定、および使用方法によって異なります。たとえば、最適化によって、色深度の低下、アルファマップへの置換、アウトラインの透明領域の削除、スウィズリングが行われる場合があります。
- テキスト要素の使用状況を分析し、テキストおよびフォントの記述を含む JSON ファイルを生成します。このファイルは、後でfontcompilerツールの入力として使用されます。
- JavaScript コードを生成された C++ コードに置き換えます。
- バインディング、状態、および遷移のコードを生成します。
- これらすべてを統合し、C++のヘッダーファイルおよびソースファイルを生成します。
fontcompiler
fontcompilerツールは、テキストおよびフォント記述の JSON ファイルを読み取り、選択されたフォント処理サブシステム用の C++ コードを生成します。詳細については、「テキストのレンダリングとフォント」を参照してください。
qmlprojectexporter
qmlprojectexporter は、入力ファイルと、出力内容を決定する設定を一覧表示するための主要なツールとして使用されます。これらの設定には、例えば、最適化、フォントエンジン、リソースの圧縮などが含まれます。qmlprojectexporter の詳細な説明およびプロジェクトオプションの完全な一覧については、『QmlProject マニュアル』を参照してください。
また、このツールは他のツールをラップする役割も果たします。ビルドプロセスの図を参照してください。
これは、他のビルドシステムとの統合性を高めるための CMake の代替手段となります。詳細については、qmlprojectexporter を参照してください。
qulpreview (テクノロジープレビュー)
qulpreview QMLプロジェクトをターゲットプラットフォームにデプロイする作業を容易にするために使用できます。これは、指定されたターゲットに関連するさまざまなワークフローを記述したプロファイルを利用することで機能します。現在、Qtが提供しているプロファイルは2つ(Windows用とLinux用)のみであり、いずれもデスクトップ版Qtを対象としています。将来的には、さらに多くのプロファイルが提供される予定です。
利用可能なオプションの完全な一覧を確認するには、qulpreview --help を実行してください。qulpreview の詳細については、QmlProjectマニュアルを参照してください。
コンパイルフェーズ
コード生成後、コンパイルが開始されます。コンパイラの入力は以下の通りです:
- アプリケーションのC++およびCコード。
- 生成されたファイル。
- Qt Quick Ultraliteのパブリックおよび内部ヘッダー。例えば、PropertyやSignalといったテンプレートクラス、あるいはRectangleやImageといったアイテム用のヘッダーが提供されます。
Qt Quick Ultralite ライブラリへのリンク
最後に、Qt Quick Ultralite ライブラリに対して静的リンクを行う必要があります。ターゲットプラットフォームに応じて、リンクの結果は以下のようになります。
- ターゲットプラットフォームがデスクトップの場合、アプリケーションの実行ファイルが生成されます。
- ターゲットMCUデバイスにフラッシュできる、*.elf、*.hex、*.runなどのイメージファイル。
特定のQtライセンスの下で利用可能です。
詳細はこちら。