C
QmlProject マニュアル
はじめに
qmlprojectexporter は、プロジェクトに含まれるすべてのリソースおよび .qml ファイルに対して、C++ コードを自動生成できるツールです。リソースには、Qml ファイル、画像、フォントファイル、翻訳ファイル、および C++ インターフェースが含まれます。qmlprojectexporter の主な引数として、.qmlproject ファイルを指定する必要があります。このファイルはプロジェクトの構造を定義しており、他の .qmlproject モジュールファイルに依存している場合があります。
qmlproject ファイル
.qmlproject ファイルの構文は、QML ドキュメントと同じ構文を使用します。.qmlproject ファイルの目的は、プロジェクトの構造を記述することです。 QMLドキュメントと同様に、.qmlprojectファイルは、インポートセクションと、それに続くノードまたはオブジェクトの階層構造で構成されています。階層はルートノード(この場合はProject)から始まり、各ノードにはあらかじめ定義されたプロパティのセットがあります。 インポートセクションは主に「import QmlProject 1.3」で構成されており、これが .qmlproject ファイルであることを示し、使用する API のバージョンを指定します。
移行ガイド
非推奨となった CMake API に依存している既存のプロジェクトを、.qmlproject を使用するように移行することができます。詳細については、『QmlProject への移行ガイド』を参照してください。
プラットフォームソースを含むプロジェクトのエクスポート
qmlprojectexporter コマンドラインユーティリティを使用すると、QmlProject をプラットフォームソースとともにエクスポートできます。これにより、Qt for MCUs をサードパーティ製のIDEやカスタムビルドシステムに統合するプロセスが簡素化されます。この機能の使用方法の詳細については、「プラットフォームソースを含むQt for MCUs プロジェクトのエクスポート」を参照してください。
ノード
各ノードは、プロジェクトの特定の部分(Qmlファイル、画像、モジュールなど)を構成します。ImageFilesなど、プロジェクトのルートノード内で複数回定義できるノードもあります。一方、MCU.Moduleなど、1回しか定義できないノードもあります。
プロパティ
.qmlproject ファイル内のプロパティは、設定パラメータと見なすことができます。各ノードには、設定可能な値の事前定義されたセットがあります。
プロジェクトファイル内で設定をサポートするすべてのノードに対し、MCU.Configノード内に配置することで設定を割り当てることができます。また、MCU.Config で定義された値は、対応するプロパティがデフォルトのノード(ImageFilesなど)に見つからない場合に有効になります。 これらの設定プロパティには「MCU.」というプレフィックスが付いています。詳細については、MCU.Configを参照してください。
ノード
プロジェクト
各qmlproject ファイルには、Project ノードがルートノードとして存在します。このルートノードには、プロジェクトに関する詳細情報を提供する他のすべてのノードが含まれています。
qmlproject ファイルの階層構造は、Project とその子ノードの2階層までとなっています。qmprojectexporter は、3階層目に配置されたノードを無視します。
使用方法
Project {
projectRootPath: "..."
...
MCU.Config {...}
...
ImageFiles {...}
...
}以下は、Project ノードで使用可能なプロパティの一覧です:
テキスト ID に基づく翻訳を有効にします。 | |
モジュールファイルが格納されているパスの一覧。 | |
QMLソースファイルは、アプリケーションの最初のUI画面を定義します。 | |
アプリケーションの主要言語を設定します。 | |
プロジェクトのルートパス | |
プロジェクトをQt for MCUs プロジェクトとしてマークするフラグ |
QmlFiles
このノードを使用すると、プロジェクトのQMLファイルを一覧表示できます。QMLファイルへのパスには、相対パスと絶対パスの両方を指定可能です。
注: 相対パスは 、qmlproject ファイルを基準とする必要があります。
使用方法
QmlFiles {
files: ["src/other.qml"]
}以下は、QmlFilesノードで使用可能なプロパティの一覧です:
QMLファイルを出力ディレクトリにコピーできるようにします | |
QML ファイルを含むディレクトリ | |
文字列のリスト。QML ファイルを選択する際に使用するバリアントを指定します。 | |
QML ファイルのリスト。 |
ImageFiles
ImageFiles ノードは、指定された画像アセットをプロジェクトに追加します。
さらに、指定されたノードで指定されたプロパティは、qulrcc-toolがこれらのアセットをエンコードする方法に影響を与えます。
同じプロジェクト内に複数の ImageFiles を配置することが可能です。これは、画像のグループごとに異なるプロパティを設定する際に必要となります。
ImageFiles ノードで特定のプロパティを定義していない場合、qmlprojectexporter はMCU.Configノードで指定されたデフォルト値を使用します。そこに定義されていない場合は、グローバルなデフォルト値が適用されます。
使用方法
Project {
...
ImageFiles {
files: [...]
MCU.resourceOptimizeForRotation: true
}
...
}以下は、ImageFilesノードで使用可能なプロパティの一覧です:
アセットのベースパスを定義します。 | |
ファイルの URI に共通のプレフィックスを追加します。 | |
AnimatedSpriteDirectoryのフレームとして使用できる画像を指定します。 | |
スプライトアニメーションのリソース最適化のために、フレームの高さを指定します。 | |
スプライトアニメーションのリソース最適化のために、フレームの幅を指定します。 | |
使用する画像のトリミング最適化モードを指定します。 | |
画像キャッシュポリシーを定義します。 | |
画像を圧縮形式で保存します。 | |
画像アセットに優先的に使用するピクセル形式を設定します。 | |
アセット内の元のデータをそのまま保持します。 | |
実行時に画像を回転させるための最適化を有効にします。 | |
実行時に画像を拡大・縮小するための最適化を有効にします。 | |
アセットの実行時割り当てタイプを定義します。 | |
アセットのストレージセクションを定義します。 | |
画像アセットを含むディレクトリを追加します。 | |
文字列のリスト。画像ファイルを選択する際に使用するバリアントを指定します。 | |
画像アセットのリスト。 |
テクスチャデータのバイトアライメント | |
resourceSVGScale を有効にする | |
SVG画像のスケーリング係数 | |
画像を不透明なセグメントに分割するための最適化を有効にする。 |
FontFiles
このノードを使用すると、プロジェクトで必要なフォントファイルを一覧表示できます。サポートされているフォントファイル形式については、フォント形式を参照してください。
使用方法
Project {
...
FontFiles {
files: [...]
}
...
}以下は、FontFiles ノードで使用可能なプロパティの一覧です:
指定されたディレクトリ内のすべてのフォントファイルを追加します。 | |
文字列のリスト。フォントファイルを選択する際に使用するバリアントを指定します。 | |
追加するフォントファイルのリスト。 |
TranslationFiles
このノードを使用すると、プロジェクトに翻訳ファイルを追加できます (.ts)。
qmlprojectexporter は、これらの翻訳ファイルを.qm ファイルに変換するために、対応するツールを呼び出します。 ファイルは、Qt が翻訳を管理するために使用するバイナリ形式です。
QMLソースでは、qsTr() またはqsTrId() を使用して、翻訳可能な文字列を指定できます。実行時、翻訳システムは現在のシステムロケールに対応する翻訳ファイル内で、一致する文字列を検索します。
使用方法
Project {
...
TranslationFiles {
files: [...]
}
...
}TranslationFiles ノードでは、以下のプロパティがサポートされています:
ソース言語の文字列を含めるか除外するかを指定します。 | |
翻訳ファイルを含むディレクトリを追加します。 | |
文字列のリスト。翻訳ファイルを選択する際に使用するバリアントを指定します。 | |
翻訳ファイルのリストを追加します。 |
InterfaceFiles
このノードは、C++インターフェース固有の設定を提供します。QMLファイルにインポートすることなく、C++インターフェースを定義し、QMLから参照できるようにすることが可能です。qmlprojectexporterは、これらのC++インターフェースのヘッダーファイルに基づいてQMLコードを生成するため、同じプロジェクト内の別のQMLファイルからそれらを参照できるようになります。
使用方法
Project {
...
InterfaceFiles {
files: [...]
}
...
}以下は、InterfaceFilesノードで使用可能なプロパティの一覧です:
Qt Quick Ultraliteに同梱されている標準ライブラリのヘッダーを含める | |
QMLのインポートを一覧表示します。 | |
C++インターフェースファイルを含むディレクトリを指定します。 | |
文字列のリスト。ヘッダーファイルを選択する際に使用するバリアントを指定します。 | |
C++ インターフェースファイルの一覧を表示します。 |
バイナリファイル
BinaryFiles ノードは、指定されたバイナリアセットをプロジェクトに追加します。
さらに、指定されたノードで指定されたプロパティは、qulrcc-toolがこれらのアセットをどのように処理するかに影響します。
同じプロジェクト内に複数の「BinaryFiles」ノードを配置することが可能です。これは、バイナリアセットのグループごとに異なるプロパティを設定する際に必要となります。
BinaryFiles ノードで特定のプロパティを定義していない場合、qmlprojectexporter はMCU.Configノードで指定されたデフォルト値を使用します。そこに定義されていない場合は、グローバルなデフォルト値が使用されます。
使用方法
Project {
...
BinaryFiles {
files: [...]
}
...
}以下は、BinaryFilesノードで使用可能なプロパティの一覧です:
リソースのベースパスを定義します。 | |
ファイルの URI に共通のプレフィックスを追加します。 | |
バイナリリソースのキャッシュポリシーを定義します。 | |
バイナリリソースの実行時割り当てタイプを定義します。 | |
バイナリリソースの保存セクションを定義します。 | |
バイナリリソースを含むディレクトリを追加します。 | |
バイナリリソースのリスト。 |
バイナリデータのバイトアライメント |
MCU.Config
このノードを使用すると、QmlProjectファイルのデフォルト値を定義できます。このノードのコンテキスト内で定義されるプロパティには、"MCU." というプレフィックスを付ける必要はありません。一方、ImageFilesやFontFilesなどの特定のノードの一部として同じプロパティを定義する場合は、このプレフィックスを使用する必要があります。
使用方法
//node1
MCU.Config {
// Project-wide default value for resourceOptimizeForRotation.
resourceOptimizeForRotation: true
}
ImageFiles {
// Here resourceOptimizeForRotation was explicitly defined for a specific ImageFiles node.
MCU.resourceOptimizeForRotation: false // requires the "MCU."prefix
}
//node2
ImageFiles {
// MCU.resourceOptimizeForRotation was not defined but the value \c true will be
// picked from MCU.Config.
}以下は、MCU.Config で利用可能なプロパティの一覧です:
Qt for MCUs にあるデフォルトのフォントファイルをプロジェクトに追加します。 | |
静的フォントエンジン向けの自動グリフ生成を制御します。 | |
画像リソースのバイナリアセットデータの組み込み方法を定義します。 | |
複雑な文字体系のレンダリングを有効にします | |
Qt Quick コントロールのスタイルを選択します。 | |
JavaScriptバイトコードを含めるかどうかを指定します | |
QMLソースに#lineディレクティブを追加するかどうかを指定します。 | |
Text アイテムのデフォルトのフォントファミリーを設定します。 | |
Text アイテムのデフォルトのフォント品質を設定します。 | |
画面上のコンテンツを時計回りに回転させます。 | |
文字列のリスト。qmlproject ファイル内のノードに対して、デフォルトで使用するバリアントを指定します。 | |
フォントキャッシュバッファの事前割り当てを制御します。 | |
フォントキャッシュの初期化を制御します。 | |
フォントエンジンが使用するキャッシュの最大サイズを設定します。 | |
プロジェクトに使用するフォントエンジンを選択します。 | |
アクセスを高速化するために、アプリケーションのフォントファイルをRAMにコピーする設定を行います。 | |
アプリケーションのフォントファイルをRAMにコピーするかどうかを制御します。 | |
フォントファイルのリソース保存領域を設定します。 | |
フォントエンジンが使用するヒープバッファの事前割り当てを制御します。 | |
フォントエンジンの最大ヒープサイズを定義します。 | |
テキストのレンダリングにベクターアウトラインを使用するかどうかを制御します | |
アクセス速度を向上させるため、事前にラスタライズされたグリフデータをRAMにコピーする設定を行います。 | |
グリフレイアウトデータのキャッシュサイズをバイト単位で指定します。 | |
ラスタライズ済みのグリフデータをRAMにコピーする際に使用される、実行時の割り当てタイプを設定します。 | |
プリラスタライズされたグリフデータに使用されるリソースストレージセクションを設定します。 | |
WordWrapモードにおけるCJK表意文字の改行設定を行います | |
段落の最大サイズを文字数で設定します。 | |
ランタイム割り当てタイプのリソースキャッシュの最大サイズを定義します。 | |
StaticText 項目のグリフを 1 つの画像に結合します。 | |
MCU.Config.platformAlphaCompressedLosslessResourcePixelFormat | 透過画像アセットのロスレス圧縮を行うためのデフォルト形式を定義します。 |
透過画像アセットのデフォルトのピクセル形式。 | |
バイト順の入れ替えを行うリソース保存セクションのカンマ区切りリスト | |
プラットフォームレイヤーエンジンのデフォルトのレンダリングヒントを設定します。 | |
画像データの最小アライメントを定義します。 | |
MCU.Config.platformOpaqueCompressedLosslessResourcePixelFormat | 不透明な画像アセットのロスレス圧縮用のデフォルトのピクセルフォーマットを定義します。 |
不透明な画像アセットのデフォルトのピクセル形式を定義します。 | |
画像に必要なピクセル位置合わせを定義します。 | |
指定されたプラットフォームのレンダリングバッチの高さを設定します。 | |
セーフビットマップのランタイム割り当てタイプを定義します。 | |
Safe Bitmap リソースのストレージセクションを定義します。 | |
Qt Safe Layout Tool 用の CRC アルゴリズムを定義します。 | |
動的な SafeText リソースのキャッシュポリシーを定義します。 | |
SafeText アイテム用のフォントファイルを含むディレクトリを提供します。 | |
動的 SafeText の実行時割り当てタイプを定義します。 | |
動的SafeTextリソースのストレージセクションを定義します。 | |
デスクトップバックエンドのローテーション機能を有効または無効にします。 | |
翻訳ファイルのリソース保存セクションを設定します。 | |
Qt Quick Ultralite 仮想キーボードで使用するピンイン辞書を選択します。 | |
Qt Quick Ultralite 仮想キーボードでピンイン入力方式を使用する |
複数行テキストの省略モードを設定します | |
Qt Quick Ultralite 仮想キーボードの幅を設定する |
ResourceStorageSection
このノードを使用して、リソースストレージセクションのプロパティを指定できます。アプリケーションで使用される各リソースストレージセクションに対して、複数のノードを指定できます。
これらのノードは、MCU.Config ノードの子ノードである必要があります。
使用方法
MCU.Config {
ResourceStorageSection
{
name: "ResourceDataInInternalFlash"
majorVersion: 2
minorVersion: 1
}
ResourceStorageSection
{
name: "ResourceDataInExternalFlash"
majorVersion: 1
minorVersion: 0
}
}以下は、ResourceStorageSection で利用可能なプロパティの一覧です:
リソース・ストレージ・セクションのメジャーバージョンを設定します | |
リソース・ストレージ・セクションのマイナーバージョンを設定します | |
リソース・ストレージ・セクションの名前を指定します |
MCU.Module
このノードの役割は、qmlprojectファイルをモジュールとして宣言することです。モジュールには、アセット、インターフェース、QMLコンポーネント、および翻訳を含めることができます。qmlprojectベースのプロジェクトでは、QmlProjectのModuleFilesノードを使用して、qmlprojectベースのモジュールを活用することができます。
注: qmlproject ファイルには 、MCU.Module ノードを1つだけ含めることができます。
使用方法
// mymodule.qmlproject
import QmlProject 1.3
Project {
MCU.Module {
uri: "custom.module"
}
QmlFiles {
files: ["CustomBox.qml"]
}
}
// CustomBox.qml
// ... some qml code
// main.qmlproject
import QmlProject 1.3
Project {
QmlFiles {
files: ["main.qml"]
}
ModuleFiles {
files: ["mymodule.qmlproject"]
}
// main.qml
import QtQuick 2.15
import custom.module
Rectangle {
CustomBox {}
}Qul モジュール
Qt Quick Ultralite には、プロジェクトでModuleFiles.MCU.qulModules を使用して利用できる、以下の事前定義済みモジュールが付属しています:
- Controls
- ControlsTemplates
- レイアウト
- Location
- プロファイリング
- 配置
- SafeRenderer
- 形状
- StudioComponents
- Timeline
- VirtualKeyboard
以下は、MCU.Module ノードで使用可能なプロパティの一覧です:
モジュール用の型情報ファイルを生成します。 | |
モジュールの URI を定義します。 |
ModuleFiles
このノードを使用して、QMLモジュールをプロジェクトにインポートできます。
使用方法
Project {
...
ModuleFiles {
MCU.qulModules: [...]
...
}
...
}以下は、ModuleFilesノードで使用可能なプロパティの一覧です:
プロジェクトがリンクすべきQt Quick Ultraliteモジュールのリスト。 | |
QMLモジュールファイルを含むディレクトリを追加します。 | |
文字列のリスト。モジュールファイルを選択する際に使用するバリアントを指定します。 | |
qmlprojectファイルのリストを追加します。 |
コマンドラインリファレンス
qmlprojectexporter
qmlprojectexporterを使用すると、QML ソース、画像アセット、およびフォントをコンパイル可能な C++ コードとしてエクスポートできます。このツールは、エクスポートオプションとともにアセットを列挙した `.qmlproject ` ファイルを解析します。 さらに、qmlprojectexporter は、インポートおよびエクスポートされたファイルのプレーンテキストリストもエクスポートするため、CMake などのサードパーティ製ビルドシステムで自動的に利用しやすくなっています。
CMakeプロジェクトにおけるqmlprojectexporter の使用方法
CMakeビルドシステムでのqmlprojectexporter の使用方法は簡単で、カスタムCMakeマクロqul_add_targetが、適切なパラメータを指定してqmlprojectexporter を呼び出す処理をすでに担当しています。これを使用するには、次のようにQML_PROJECT引数を定義し、その後にqmlprojectファイルを指定する必要があります。
// Adding the \l GENERATE_ENTRYPOINT option will generate an application entrypoint automatically,
// but it requires setting the \l Project.mainFile property
qul_add_target(my_project QML_PROJECT my_project.qmlproject GENERATE_ENTRYPOINT)
// Note for a working Qul application with CMake it is still required to call \l app_target_setup_os macro
// after adding the qmlproject target.
app_target_setup_os(myproject)qmlprojectexporter を使用する場合、qmlprojectexporter の呼び出しによって同じ機能が実行されるため、以下の CMake マクロは必要ありません。
- qul_target_qml_sources
- qul_target_generate_interfaces
- qul_target_embed_translations
- qul_add_qml_module
QmlProject の代替機能によって置き換えられたすべての CMake フラグは、CMake マニュアルにおいて非推奨としてマークされています。
スタンドアロンでの使用qmlprojectexporter
CMake以外のビルドシステムを使用する場合でも、qmlprojectexporter を直接使用することは可能です。生成されたアセットファイルは、任意のビルドシステムで使用できます。
qmlprojectexporter --outdir output_directory myproject.qmlproject以下に、qmlprojectexporter のコマンドライン引数の詳細な一覧を示します:
qmlproject ファイルへのパス。 | |
ボード SDK へのパス | |
ボードのデフォルトプロパティ値が設定された BoardDefaults<@op>.</@op>qmlprojectconfig ファイルへのパス | |
コントロールのスタイルを上書きする | |
インターフェースファイルに使用する C++ 標準を指定します | |
生成されるコードに含まれるランタイム情報のレベル。 | |
既存のプロジェクトを更新する際に、プラットフォームソースを再エクスポートするには、このフラグを使用します | |
Qt for MCUs を使用して既存のプロジェクトを拡張します。 | |
グローバルなデフォルト値およびオプションのボードデフォルト値を含むファイルを生成する | |
qmlprojectexporter がデフォルトのアプリケーションエントリポイントを生成するかどうかを制御します | |
リソースバイナリの生成を強制します。 | |
コマンドライン引数を一覧表示します。 | |
IDE からコピーされたハードウェアコードソースファイルの出力ディレクトリ。 | |
インクルードディレクトリのカンマ区切りリスト。 | |
IDE で生成されたハードウェアコードをプロジェクトに含める | |
ResourceGenerator または ResourceGenerator<@op>.</@op>exe へのパス(TRAVEO T2G ボードでの RLE サポート用) | |
ビルドシステム向けの構成情報のエクスポートを無効にするコマンドラインオプション。 | |
C++ ソースのエクスポートを無効にします。 | |
プロジェクト内のモジュールのエクスポートを無効にします。 | |
生成されたプロジェクト内のプラットフォームソースのエクスポートを防ぐには、このフラグを使用します | |
QmlProject のエクスポートをスキップします。 | |
出力ディレクトリ。 | |
並列プロセスの最大数。 | |
ターゲットとなるプラットフォームの識別子(オプション)。 | |
カスタマイズされたプラットフォームのビルドディレクトリ。 | |
ターゲットプラットフォームを記述するメタデータファイル。 | |
エクスポートされたプラットフォームソース用の出力ディレクトリ。 | |
IDE プロジェクトファイルの出力ディレクトリ。 | |
エクスポートされるプロジェクトのタイプを設定します | |
カスタム QML モジュールとデフォルトモジュールとのマッピングを含むファイルが格納されているディレクトリのパスを指定します。 | |
生成されたファイルの出力ディレクトリ。 | |
Qt Quick Ultralite ライブラリのビルドタイプを設定します。 | |
rc.exe へのパス(MSVC ツールチェーン用)。 | |
プロジェクトバリアントを選択するための、コンマ区切りのセレクタのリスト。 | |
生成されたソースファイルを使用するターゲットのタイプを指定します。 | |
生成されたファイルのコンパイルに使用するツールチェーンを指定します。 | |
既存のプロジェクトのQt for MCUs 部分を更新します。 | |
翻訳ファイルの更新を有効にします。 | |
他のツールへの呼び出しを標準出力に表示します。 |
qmlprojectexporterによって生成されたファイル
出力ディレクトリに生成されるファイルは、使用するコマンドライン引数によって異なります。プロジェクトのビルドプロセスにおいてqmlprojectexporter がどのような役割を果たしているかをより深く理解するには、Qt Quick を参照してください。Ultraliteツール以下のリストは、次の例に基づいて生成される可能性のあるファイルの一覧です:
以下のスタートアッププロジェクトファイルを例に考えてみましょう:
| 定数 | 説明 |
|---|---|
my_project.qmlproject | プロジェクトのメイン設定ファイル |
main.qml | プロジェクトのエントリポイントファイル |
エクスポートなし
qmlprojectexporter --no-export-cpp --no-export-modules --no-export-configuration --outdir output my_project.qmlprojectこのコマンドを実行すると、output ディレクトリが作成されますが、このコマンドはすべてのエクスポートを無効にするため、その中にファイルは作成されません。
エクスポート設定
qmlprojectexporter --no-export-cpp --no-export-modules --outdir output my_project.qmlproject--no-export-configuration引数を削除すると、以下のファイルが生成されます:
| 定数 | 説明 |
|---|---|
output/config/my_project.1.compiler_outputs.txt | Qt Quick Ultralite ツールによって生成されたすべてのファイルの一覧です。 |
output/config/my_project.1.input.txt | qmlprojectexporter がC++ファイルを生成するために使用した入力ファイルを示します。my_projectの場合、main.qml のみです。 |
output/config/my_project.1.libraries.txt | ビルドを成功させるために、ビルドシステムがどのライブラリをリンクする必要があるかを一覧表示します。 |
output/config/my_project.1.linker_options.txt | プロジェクトをビルドするために、ビルドシステムが追加しなければならないリンカーオプションを示します。 |
前述のコマンドを使用すると、ファイルを生成するオーバーヘッドを伴わずに、プロジェクトで必要とされるリソースや構成に関する情報を取得することができます。
CPPファイルのエクスポート
qmlprojectexporter --no-export-modules --outdir output my_project.qmlproject--no-export-configuration を削除すると構成一覧が表示されますが、--no-export-cpp を削除すると、プロジェクト用の実際のCPP ファイルがすべて生成されます。Qt Quick Ultralite toolsでは、どのツールがどのファイルを担当しているかについて解説しています。
モジュールのエクスポート
qmlprojectexporter --outdir output my_project.qmlproject先の例で、--no-export-modulesオプションを指定せずにqmlprojectexporter を実行しても、その例ではモジュールファイルが一切使用されていないため、出力フォルダに大きな変化はありません。しかし、プロジェクトをモジュールごと完全にエクスポートすると、サードパーティ製ツールが使用する出力ディレクトリに 2 つのファイルが表示されます。それらのファイルは以下の通りです:
| 定数 | 説明 |
|---|---|
output/config/input.json | プロジェクトで使用されるすべての入力、プロジェクトがインポートしたモジュールが使用するファイル、およびインポートされたモジュール内でインポートされたモジュールが使用するファイルを再帰的に列挙した構造化ファイルです。 |
generate_files.txt | キーと値のペアを保持しており、CMakeはこれを使用してqmlprojectexporter が生成するエントリポイントファイルを推定します。主に–generate-entrypointを指定する際に使用され、生成されるファイルはアプリケーションのターゲットタイプ(実行ファイル|静的ライブラリ)によって異なる場合があります。 |
--no-export-modules の主効果を確認するには、以下の新しいプロジェクトファイルを参照してください:
| 定数 | 説明 |
|---|---|
module1/module1.qmlproject | module1 の設定ファイル。ModuleFilesを使用してmy_project.qmlproject にインポートされます |
module1/module1.qml | module1のQmlFilesに含まれ、main.qml |
新しいファイルを使用して前述の `qmlprojectexporter ` コマンドを実行すると、以下の結果になります:
| 定数 | 説明 |
|---|---|
output/module1/* | output/ フォルダと同様に、module1 用の生成されたCPP ファイルを含むフォルダ |
output/config/module1.1.compiler_outputs.txt | Qt Quick Ultralite ツールがmodule1 用に生成したすべてのファイルの一覧です。 |
output/config/module1.1.input.txt | module1 C++ ファイルの生成に使用されるファイルを示します。 |
output/config/module1.1.libraries.txt | module1 によって導入されたその他のライブラリ依存関係。 |
output/config/module1.1.linker_options.txt | module1 によって導入された追加のリンカオプションを示します。 |
qmlprojectexporter --no-export-modules を省略し、--no-export-cpp を使用すると、構成 txt ファイルが生成されます。
デフォルトのアプリケーションエントリポイントを持つモジュールのエクスポート
既存のエントリポイントがある場合、次のステップで生成されるファイルは必要ありません。以下のコマンドについて考えてみましょう。
//[1]
qmlprojectexporter --generate-entrypoint --target-type executable --outdir output my_project.qmlproject
//[2]
qmlprojectexporter --generate-entrypoint --target-type static_library --outdir output my_project.qmlprojectqmlprojectexporter --target-type フラグの設定に応じて、生成されるファイルのリストに新しいファイルが追加されます。
実行ファイルを使用する場合:
| 定数 | 説明 |
|---|---|
output/main.cpp | アプリケーションの main() 関数を含む main.cpp。 |
static_library を使用する場合:
| 定数 | 説明 |
|---|---|
output/qul_run.h | 静的ライブラリのインターフェース。 |
output/my_project_qul_run.cpp | 静的ライブラリインターフェースの実装。 |
qulpreview (テクノロジープレビュー)
用語
- プロファイル - QML プロジェクトを特定のプラットフォームにデプロイする方法を記述した JSON ドキュメント。デフォルトでは、現在の作業ディレクトリ内の `
profiles` ディレクトリに存在することが想定されています(これは、--profile-dirというコマンドライン引数で上書き可能です)。現時点では、プロファイル用の JSON スキーマは存在しませんが、その構造は非常に単純です。 各プロファイルは以下の要素で構成されます:- プロファイルID。これはプロファイルを参照するために使用されるため、一意である必要があります。
- オプションで、人間が読みやすいプロファイル名
- (任意)人間が読みやすいプロファイルの説明
- ユーザー定義変数の配列(後述)
- ワークフローの配列(後述)
- 変数 - レシピや他の変数内で使用でき、長くて繰り返しの多いパターンを回避するための名前と値のペア。
- ワークフロー - ターゲットプラットフォームに対する、自己完結型の操作(例:デプロイ、更新、クリーンアップ)。各ワークフローには以下が含まれます:
- プロファイルを明確に識別する一意のワークフローID
- オプションで、人間が読みやすい名前
- オプションで、人間が読みやすい説明
- 実行するレシピ(以下を参照)
- レシピ - 実行するステップ(後述)の配列。
- ステップ - 何をどのように実行すべきかを記述する単一のデプロイコマンド。以下の要素で構成される:
- 実行するコマンド。シェル内で実行されるわけではないため、シェルコマンドは使用できない点に注意
- オプションで、コマンドライン引数の配列
- オプションで、追加の環境変数の配列。これらは環境変数として追加されるか、同名の変数がすでに存在する場合は、システム環境変数を上書きするために使用されます。
qulpreview QMLプロジェクトをターゲットプラットフォームに迅速かつ簡単にデプロイするために使用できます。最も基本的なシナリオでは、このツールは次のように使用できます:
qulpreview <QMLPROJECT>ここで、<QMLPROJECT> はプロジェクトの.qmlproject ファイルへのパスです。動作は、--profile <PROFILE_ID> および--workflow <WORKFLOW_ID> というコマンドライン引数を使用してさらにカスタマイズできます。ここで、<PROFILE_ID> と<WORKFLOW_ID> は、それぞれターゲットプロファイルの ID と、デプロイ手順を記述するワークフローの ID です。
現在のテクノロジープレビュー段階では、Qt for MCUs には2つのプロファイルのみが同梱されており、いずれもデスクトップ向けQt XMLを対象としています。Windows用がwin-mingw 、Linux用がlinux-gcc です。
注: これら2つのプロファイルでは、特にQt Locationに関して多くの 仮定が設けられているため、多少不安定な面があります。将来的には改善や追加のプロファイルが予定されています。また、ユーザーは自身が使用するボードに合わせて独自のプロファイルを作成することも推奨されています。
利用可能なプロファイルの一覧は、qulpreview --list-profiles を実行することで取得できます。
プロファイルでは、繰り返しパターンを最小限に抑えるために変数を利用できます。構文は${VAR_NAME} です。
注:変数の置換ロジックは非常に 単純です。変数は定義順に展開されるため、変数の中にそれ以降に定義された変数が含まれていないことを確認してください。含まれている場合、その変数はそのままの形で扱われます。
環境変数も利用可能で、env: というプレフィックスを使用して参照できます(例:${env:PATH} )。
プロファイル作成者の利便性を考慮し、このツールでは、主にプロジェクトに関連するいくつかの事前定義済み変数が用意されています:
OUT_DIR- 推奨出力先。qulpreview自体はアーティファクトを生成しませんが、この変数をレシピ内で使用することで、ツールの出力をカスタマイズできます。--out-dirのコマンドライン引数で指定可能ですPROJECT_FILE_PATH-.qmlprojectファイルへのフルパス(プロジェクトファイル自体を含む)PROJECT_FILE_NAME- プロジェクトファイル名(拡張子を含む)PROJECT_BASE_NAME- プロジェクトファイル名(拡張子を除く)PROJECT_DIR- プロジェクトファイルの親ディレクトリ
注: ユーザー定義および事前定義された変数名は大 文字と小文字が区別されます。環境変数については、ホストシステムによって異なります。
レシピ内のステップは順次実行され、あるステップが失敗した場合(開始できない、クラッシュする、ゼロ以外の終了コードで終了するなど)、その後のステップは実行されません。
qulpreview でエラーが発生した場合、EXIT_FAILURE のエラーコードで終了し、エラーはstderr に出力されます。
以下に、qulpreview コマンドライン引数の詳細な一覧を示します。
コマンドライン引数を一覧表示します。 | |
使用可能なプロファイルを一覧表示します。 | |
出力ディレクトリへのパスを指定します。 | |
使用するプロファイルのID。 | |
プロファイル定義ファイルが含まれるディレクトリ。 | |
使用するワークフローの ID。特定の Qt ライセンスの下で利用可能です。xml-ph-0000@deepl.internal 詳細はこちらをご覧ください。 |
特定の Qt ライセンスの下で利用可能です。
詳細はこちらをご覧ください。