C
プラットフォームソースを含むQt for MCUs プロジェクトのエクスポート
qmlprojectexporter を使用して、選択したターゲット用のプラットフォーム・ソースと、各.qmlproject ファイル用に生成された UI ソースを含むQt for MCUs プロジェクトを生成できます。
以下の説明に加えて、タイプ固有の設定をここで参照できます。
使用方法
プロジェクト・タイプとプラットフォーム・ターゲットを選択して、プロジェクト生成をトリガーする。利用可能なプロジェクト・タイプは、"ghs" 、"cmake" 、"cmsis" 、"esp-idf" 、"zephyr" 、"none" 。プロジェクト・タイプを選択するには、-project-typeコマンド行引数を使用します。
初めてプロジェクトを生成する
プロジェクトを初めて生成する場合、.qmlproject ファイルからのプラットフォーム・ソースと生成されたソースがデフォルトで含まれます。デフォルトの動作をオーバーライドするには、--export-platform、--no-export-platform、または--no-export-qml を使用します。
Qt for MCUs のインストールには、エクスポートに使用されるプラットフォーム・メタデータが付属しています。以下の2つの方法のいずれかを使用して、プラットフォーム・ターゲットを指定する:
- platformコマンドライン引数でプラットフォームを指定し、--toolchainでツールチェインを指定する。この情報を使用して、
qmlprojectexporterはQt for MCUs のインストール・ディレクトリにある正しいメタデータ・ファイルを探します。例<QUL_ROOT>/bin/qmlprojectexporter.exe --platform stm32f769i-discovery-baremetal --toolchain iar --project-type cmake --outdir my_project my_project.qmlproject
- プラットフォーム・メタデータ・ファイルを--platform-metadataコマンド行引数で指定します。プラットフォームのメタデータファイルは、インストーラパッケージの場合は
<QUL_ROOT>/libに、カスタムプラットフォームビルドの場合はビルドディレクトリにあります。メタデータ・ファイル名は以下の形式を使用します:QulPlatformTargets_<PLATFORM_NAME>-export.json.例<QUL_ROOT>/bin/qmlprojectexporter.exe --platform-metadata <QUL_ROOT>/lib/QulPlatformTargets_stm32f769i-discovery-baremetal_32bpp_Windows_iar-export.json --project-type cmake --outdir my_project my_project.qmlproject
ターゲット・プラットフォームとIDEによっては、プラットフォーム・コードを実行するためにボードSDKからのドライバ・ソースが必要です。これらのソースを生成プロジェクトに含めるには、--board-sdkおよび--include-ide-generated-hw-codeコマンド行引数を使用します。
次のコマンド例は、Qt for MCUs プラットフォーム・ソース、ボード SDK からのドライバ・コード、および指定された.qmlproject に基づいて生成された UI ソースを含むプロジェクトを生成します。また、--generate-entrypointコマンド行引数を追加すると、qmlprojectexporter はmain() またはqul_run() 関数を生成し、ターゲット上でプロジェクトを実行できるようにします:
<QUL_ROOT>/bin/qmlprojectexporter.exe --platform rh850-d1m1a-baremetal --toolchain ghs --project-type ghs --outdir my_project --include-ide-generated-hw-code --board-sdk /path/to/board-sdk my_project.qmlproject --generate-entrypoint
注: .qmlproject に含まれるインターフェイスが外部ソース・ファイルに依存している場合は、手動でプロジェクトに追加してください。
既存のプロジェクトがある場合は、qmlprojectexporter を使用して、--extend-projectコマンドライン引数を指定して、Qt for MCUs プラットフォームと UI コードを追加できます。プロジェクトを拡張するには、ゼロからプロジェクトを生成するときと同じ情報が必要です:
<QUL_ROOT>/bin/qmlprojectexporter.exe --platform rh850-d1m1a-baremetal --toolchain ghs --project-type ghs my_project.qmlproject --extend-project my_project/main_project_file.gpj
注意: 現在、拡張できるのはGHSプロジェクトのみです。詳細については、GHSプロジェクトの拡張を参照してください。
outdirで出力ディレクトリを設定しない場合、qmlprojectexporter 、--extend-projectで指定したメインプロジェクトファイルのベースディレクトリが使用されます。
注意: プラットフォーム・ソースと.qmlproject ファイルから生成されたソースは、デフォルトでインクルードされます。デフォルトの動作を上書きするには、--export-platformまたは--no-export-qml を使用します。
既存のプロジェクトの更新
qmlprojectexporter がプロジェクトにQt for MCUs を追加すると、エクスポートに使用したコマンド行引数も同時にexporter_settings.json に保存されます。これにより、.qmlproject に変更があった場合、その後の更新が簡単になります。
Qt for MCUs ソースとサブプロジェクトですでに拡張されている(または作成されている)既存のプロジェクトを更新するには、メイン・プロジェクトと.qmlproject ファイルを指定してください:
<QUL_ROOT>/bin/qmlprojectexporter.exe my_project.qmlproject --update-project my_project/main_project_file.gpj
注: これは、qmlprojectexporter 設定キャッシュ・ファイル (exporter_settings.json) がプロジェクトのベース・ディレクトリにあることを前提としています。
GHSプロジェクトの場合、設定済みのワークスペースがメインプロジェクトに追加されます。このワークスペースを使用して更新をトリガーする方法については、GHS Multi IDE QUL Workspaceを参照してください。
既存のプロジェクトにすでにアプリケーションのエントリポイントがある場合、Qt for MCUs をカスタムmain() 関数に統合する方法については、アプリケーションでQt Quick Ultralite を実行するを参照してください。エントリーポイントがない場合は、--generate-entrypoint引数を使用してエントリーポイントを作成し、プロジェクトに追加します。
プロジェクトの構造
outdirコマンドライン引数でプロジェクトの出力ディレクトリを指定する。デフォルトでは、プラットフォーム・ソース、生成されたUIソース、およびそれらを含むプロジェクト・ファイルは、出力ディレクトリの下の別々のディレクトリに配置されます。
注: --outdir が設定されていない場合、qmlprojectexporter は現在の作業ディレクトリを使用します。
- エクスポートされたプラットフォーム・ソースは
<outdir>/QtMCUs/platformに配置されます。 - QmlProject から生成された UI ソースは
<outdir>/QtMCUs/generatedにあります。 <outdir>/<project-type>プロジェクト・タイプがghsの場合、IDE ファイル・パスは<outdir>/GHSになります。
対応するコマンドライン引数を使用して、デフォルトのディレクトリをオーバーライドできます:
プロジェクトの種類
プロジェクトの種類None
デフォルトのプロジェクト・タイプは"none" です。これはqmlprojectexporter がプラットフォーム・ソースと IDE 固有のプロジェクト・ファイルをエクスポートしないことを意味します。生成されたUIファイルは--outdirで指定された出力ディレクトリに直接置かれる。この場合、プラットフォーム・ターゲットを指定する必要はありません。
プロジェクトの種類GHS
Qt for MCUs ソースで GHS MULTI IDE プロジェクトを生成するには、--project-type ghs を使用します。生成されたプロジェクトの内容の詳細については、生成されたGHSプロジェクトの内容を参照してください。
プロジェクトタイプCMake
CMakeパッケージを生成し、プラットフォームソースを出力ディレクトリにエクスポートするには、--project-type cmake 。
CMakeプロジェクトでパッケージを使用する方法については、CMakeプロジェクトの生成を参照してください。
プロジェクトの種類ESP-IDF
Qt Quick Ultralite アプリケーション・ソースとプラットフォーム・ソースを含む ESP-IDF プロジェクトを出力ディレクトリに生成するには、--project-type esp-idf を使用します。
詳細については、Espressif IoT Development Framework (ESP-IDF)のプロジェクトを生成するを参照してください。
プロジェクトタイプ Zephyr
Qt Quick Ultraliteアプリケーションソース、プラットフォームソース、Zephyr プロジェクトを含むCMakeパッケージを生成するには、--project-type zephyr を使用します。これは、参照Zephyr プラットフォーム・ポートでのみ使用できます。
詳細については、 Zephyr のプロジェクトを生成するを参照してください。
プラットフォームのエクスポート
qmlprojectexporter を使って、QmlProject を使わずにQt for MCUs プラットフォーム・ソースをエクスポートすることができます。そのためには、上記のようにプロジェクトの種類とプラットフォームを指定し、さらにコマンドライン引数--no-export-qml を追加してください。
注: Qt Quick Ultraliteライブラリーは、デフォルトでリンク時最適化を使用するように設定されています。このため、Qt Quick Ultraliteライブラリのビルドに使用されたものとまったく同じバージョンのコンパイラを使用する必要があります。
ビルド済みプラットフォームのエクスポート
<QUL_DIR>/bin/qmlprojectexporter.exe \ --platform-metadata <QUL_DIR>/lib/QulPlatformTargets_<PLATFORM_NAME>-export.json \ --project-type cmake \ --no-export-qml \ --outdir <DESTINATION_FOLDER>
カスタムプラットフォームビルドからのソースのエクスポート
ビルドディレクトリ<BUILD_DIR>/.cmake/api/v1/query/codemodel-v2 に空のファイルを作成し、CMake がメタデータファイルを生成するようにツリーを再構成します(PlatformExport CMake ターゲットをビルドするだけで十分です)。メタデータファイルは、ビルドディレクトリの <BUILD_DIR>/QulPlatformTargets_<PLATFORM_NAME>-export.json にあります。例えば、STM32H750b プラットフォーム用のメタデータファイルは次のようになります:QulPlatformTargets_stm32h750b-discovery-baremetal_32bpp_Linux_armgcc-export.json
<QUL_DIR>/bin/qmlprojectexporter.exe \ --platform-metadata <QUL_DIR>/QulPlatformTargets_<PLATFORM_NAME>-export.json \ --project-type cmake \ --no-export-qml \ --outdir <DESTINATION_FOLDER> \ --platform-build-dir <BUILD_DIR>
Qt for MCUs 、サードパーティのIDEに統合します。
エクスポートしたソースをサード・パーティのIDEまたはビルド・システムに統合するには、以下の手順に従ってください。
注記: これらの手順は、GHS Multi IDEおよびCMakeプロジェクトに対して自動的に実行されます。他のIDEを使用する場合は、手動で手順に従ってください。
- エクスポートされたプラットフォームとアプリケーションのソース ファイルを IDE のプロジェクトに追加します。
- プロジェクトのソース リストにアセンブリ ソース ファイルを追加します。プロジェクトのソース・リストに
--toolchain GNUをqmlprojectexporterに渡すと、リソース用のバイナリファイル(incbin)が生成されます。その場合、qul_font_files_loader.Sとqul_assets.Sをソースに追加する必要があります。このオプションはGNU GCCコンパイラーにのみ適用されます。他のコンパイラでは、リソースは C++ 配列として生成されます。 - ピン・マキシング、クロック・コンフィギュレーション、ハードウェア初期化コードを含むボード・ファイルを追加します。
これらのファイルは、以下のオプションのいずれかを使用して追加できます:
- カスタム・ボード・ファイルは、STM32 CubeMXやNXP MCUXPresso configツールなどのMCUベンダー・ツールを使用して生成できます。
- ボードファイルをエクスポートするには
--include-ide-generated-hw-codeqmlprojectexporterを使用して、Qt for MCUs がリファレンス・ボード用に提供するボード・ファイルをエクスポートします。また、--ide-sources-outdirオプションを使用してターゲット・ディレクトリを指定することもできます。
例えば(特にGHS MULTI IDEプロジェクトをエクスポートする場合を除き、
"cmake"プロジェクトタイプを使用してください):<QUL_DIR>/bin/qmlprojectexporter.exe \ --platform-metadata $BUILD_DIR/QulPlatformTargets_<PLATFORM_NAME>-export.json \ --outdir <DESTINATION_FOLDER> \ --platform-build-dir <BUILD_DIR> \ --ide-sources-outdir <IDE_PROJECT_ROOT_DIR>/board \ --include-ide-generated-hw-code \ --project-type cmake | ghs \ --no-export-qml
- インクルードパス、事前定義、ツールチェインフラグを追加します。
<PLATFORM_EXPORT_DIR>/IDE-Import-Instructions.txtファイルには、プロジェクトに必要なすべてのコンパイラとリンカの設定が記載されています。これには、使用するツールチェーンのアーキテクチャ・フラグ、インクルード・パス、プリプロセッサ定義が含まれます。 - プロジェクトのリンカ設定に、エクスポートされたリンカ・スクリプトへのパスを追加します。
Qt Quick Ultralite アプリケーション用のリンカ・スクリプトでは、リソース・ データとキャッシュ用にカスタム・セクションを定義する必要があります。プラットフォーム・エクスポートからエクスポートされたリンカ・スクリプトは、IDE で直接使用できます。
ARMGCC の場合:
<QUL_EXPORT_FOLDER>/platform/boards/nxp/<board>/cmake/armgcc/<linker_file>.ldIAR の場合:<QUL_EXPORT_FOLDER>/platform/boards/nxp/<board>/cmake/iar/<linker_file>.icf - リンカ設定に、以下のプリビルドQt Quick Ultralite ライブラリを追加します:
- <BUILD_DIR>/libQulCore_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
- <BUILD_DIR>/libQulControls_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
- <BUILD_DIR>/libQulPNGDecoderLodePNG_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
- <BUILD_DIR>/libQulPNGDecoderNull_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
- <BUILD_DIR>/libQulShapes_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
- <BUILD_DIR>/libQulControlsTemplates_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
- <BUILD_DIR>/libQulTimeline_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
- <BUILD_DIR>/libQulMonotypeUnicodeEngineShaperDisabled_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
- <BUILD_DIR>/libQulMonotypeUnicode_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
追加情報
QUL_STD_STRING_SUPPORT CMakeオプション
このアーキテクチャでは、コア・ライブラリがQUL_STD_STRING_SUPPORT CMake オプションでビルドされている場合、プロジェクトの設定時に CMake オプションを使用する必要があります。そうしないとアプリケーションがクラッシュします。