このページについて

C

Qt for MCUs プロジェクトをプラットフォームソースとともにエクスポートする

qmlprojectexporter を使用すると、選択したターゲット向けのプラットフォームソースを含むQt for MCUs プロジェクトを生成し、各.qmlproject ファイルに対して生成された UI ソースを生成することができます。

以下の手順に加え、こちらでタイプごとの設定についても参照できます

使用方法

プロジェクトタイプとプラットフォームターゲットを選択して、プロジェクトの生成を開始します。利用可能なプロジェクトタイプは、"ghs""cmake""cmsis""esp-idf""zephyr" 、および"none" です。タイプを選択するには、--project-typeコマンドライン引数を使用してください。

プロジェクトを初めて生成する場合

初めてプロジェクトを生成する場合、デフォルトではプラットフォームソースと、.qmlproject ファイルから生成されたソースが含まれます。このデフォルトの動作を上書きするには、--export-platform--no-export-platformまたは--no-export-qmlを使用してください。

Qt for MCUs のインストールには、エクスポートに使用されるプラットフォームメタデータが含まれています。以下の2つの方法のいずれかを使用して、プラットフォームターゲットを指定してください。

  • --platformコマンドライン引数でプラットフォームを指定し、--toolchain でツールチェーンを指定します。この情報を使用して、qmlprojectexporterQt 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コマンドライン引数を追加すると、qmlprojectexportermain() または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ワークスペース」を参照してください。

既存のプロジェクトにすでにアプリケーションのエントリポイントがある場合は、「アプリケーションでのQt Quick Ultraliteの実行」を参照し、Qt for MCUs をカスタムmain() 関数に統合する方法を確認してください。エントリポイントがない場合は、--generate-entrypoint引数を使用してエントリポイントを作成し、プロジェクトに追加してください。

プロジェクトの構造

--outdirコマンドライン引数を使用して、プロジェクトの出力ディレクトリを指定します。デフォルトでは、プラットフォームのソース、生成された UI ソース、およびそれらを含むプロジェクトファイルは、出力ディレクトリの下の別々のディレクトリに配置されます。

注: --outdir が設定されていない場合 qmlprojectexporter は現在の作業ディレクトリを使用します。

  • エクスポートされたプラットフォームソースは、<outdir>/QtMCUs/platform にあります。
  • QmlProject から生成された UI ソースは、<outdir>/QtMCUs/generated にあります。
  • IDE プロジェクトファイルは、<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

--project-type cmake を使用して CMake パッケージを生成し、プラットフォームのソースコードを出力ディレクトリにエクスポートします。

CMakeプロジェクトでのパッケージの使用方法については、「CMakeプロジェクトの生成」を参照してください。

プロジェクトの種類ESP-IDF

--project-type esp-idf を使用して、Qt Quick のUltraliteアプリケーションソースおよびプラットフォームソースを含むESP-IDFプロジェクトを出力ディレクトリに生成します。

詳細については、「Espressif IoT Development Framework (ESP-IDF) プロジェクトの生成」を参照してください。

プロジェクトの種類 Zephyr

--project-type zephyr を使用して、Qt Quick Ultraliteアプリケーションのソースコード、プラットフォームのソースコード、およびZephyr プロジェクトを含むCMakeパッケージを生成します。これは、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 を使用する場合は、手動で手順に従ってください。

  1. IDE内のプロジェクトに、エクスポートされたプラットフォームおよびアプリケーションのソースファイルを追加します。
  2. アセンブリソースファイルをプロジェクトのソースリストに追加します。qmlprojectexporterに --toolchain GNU を qmlprojectexporter に渡すと、リソース用のバイナリファイル(incbin)が生成されます。その場合、qul_font_files_loader.S およびqul_assets.S をソースに追加する必要があります。このオプションは GNU GCC コンパイラにのみ適用されます。その他のコンパイラでは、リソースは C++ 配列として生成されます。
  3. ピンマルチプレクシング、クロック設定、およびハードウェア初期化コードを含むボードファイルを追加します。

    以下のいずれかのオプションを使用して、これらのファイルを追加できます。

    • カスタムボードファイルは、STM32 CubeMXやNXP のMCUXPresso設定ツールなどのMCUベンダーツールを使用して生成できます。
    • xml-ph-0000@deepl.internal を使用して --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
  4. インクルードパス、プリ定義、およびツールチェーンフラグを追加します。

    <PLATFORM_EXPORT_DIR>/IDE-Import-Instructions.txt ファイルには、プロジェクトに必要なすべてのコンパイラおよびリンカの設定が記載されています。これには、使用中のツールチェーンに関するアーキテクチャフラグ、インクルードパス、およびプリプロセッサ定義が含まれます。

  5. プロジェクトのリンカ設定で、エクスポートされたリンカスクリプトへのパスを追加します。

    Qt Quick Ultralite アプリケーション用のリンカースクリプトでは、リソースデータおよびキャッシュ用にカスタムセクションを定義する必要があります。プラットフォームエクスポートからエクスポートされたリンカースクリプトは、IDE で直接使用できます。

    ARMGCC の場合:<QUL_EXPORT_FOLDER>/platform/boards/nxp/<board>/cmake/armgcc/<linker_file>.ld IAR の場合:<QUL_EXPORT_FOLDER>/platform/boards/nxp/<board>/cmake/iar/<linker_file>.icf

  6. 以下の事前ビルド済みの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_<アーキテクチャ>-<コンパイラ>-<ビルドタイプ>.a
    • <BUILD_DIR>/libQulShapes_<ARCHITECTURE>-<COMPILER>-<BUILD_TYPE>.a
    • <BUILD_DIR>/libQulControlsTemplates_<アーキテクチャ>-<コンパイラ>-<ビルドタイプ>.a
    • <BUILD_DIR>/libQulTimeline_<アーキテクチャ>-<コンパイラ>-<ビルド_タイプ>.a
    • <BUILD_DIR>/libQulMonotypeUnicodeEngineShaperDisabled_<アーキテクチャ>-<コンパイラ>-<ビルドタイプ>.a
    • <BUILD_DIR>/libQulMonotypeUnicode_<アーキテクチャ>-<コンパイラ>-<ビルド_タイプ>.a

追加情報

QUL_STD_STRING_SUPPORT CMake オプション

コアライブラリがQUL_STD_STRING_SUPPORT オプションを使用してビルドされている場合、プロジェクトの構成時には、このCMakeオプションを使用する必要があります。そうしないと、アプリケーションがクラッシュします。

特定のQtライセンスの下で利用可能です。
詳細はこちら。