このページでは

C

QmlProjectへの移行ガイド

説明

Qt Quick Ultralite 2.4 以降、QmlProject ファイル (.qmlproject という拡張子のファイル) は、すべてのソース、リソース、モジュール、コンフィギュレーション設定を含むプロジェクトを記述します。このガイドでは、既存のQt for MCUs プロジェクトを CMake から QmlProject に移行する方法を説明します。既存のプロジェクトを移行する際には、非推奨の CMake API を QmlProject の対応するノードに置き換えてください。QmlProject API の説明と使い方はQmlProject Manualを参照してください。CMakeのAPIについてはCMakeマニュアルを参照してください。

qmlprojectexporterツールは.qmlproject を処理し、プロジェクトに必要なソースを生成するために他のツールを起動します。qmlprojectexporter ツールを使用すると、CMake から独立してQt for MCUs プロジェクトを定義できます。また、qul_add_target()QML_PROJECT オプションを付けて、CMake と一緒に使うこともできます。このカスタム CMake コマンドは、qmlprojectexporter を裏で呼び出します。このガイドの後半にあるCMakeLists.txt の例では、CMake を使ってこれを行う方法を説明しています。

非推奨CMake APIとその代替のリスト

非推奨の CMake 変数

Note: プレフィックスがPLATFORM の変数はプラットフォームのポートに適用され、その置き換えはプラットフォームのBoardDefaults.qmlprojectconfig ファイルに属します。詳細は Qt for MCUs 2.3へのプラットフォーム移行ガイドを参照してください。

非推奨の CMake 変数QmlProject の置き換え説明
qul_debug_bytecodeMCU.Config.debugBytecode生成されたソースにコメントとして JavaScript バイトコードを追加します。
qul_debug_line_directivesMCU.Config.debugLineDirectives生成されるソースに#lineディレクティブを追加します。
qul_platform_default_resource_compressed_lossless_pixel_format_alphaMCU.Config.platformAlphaCompressedLosslessResourcePixelFormat透過画像アセットのロスレス圧縮のデフォルトフォーマットを定義します。
qul_platform_default_resource_compressed_lossless_pixel_format_opaqueMCU.Config.platformOpaqueCompressedLosslessResourcePixelFormat不透明画像アセットのロスレス圧縮のデフォルトのピクセル形式。
qul_platform_default_resource_pixel_format_alphaMCU.Config.platformAlphaPixelFormat透過画像アセット用のデフォルトのピクセルフォーマット。
qul_platform_default_resource_pixel_format_opaqueMCU.Config.platformOpaquePixelFormat不透明画像アセット用のデフォルトのピクセルフォーマット。
qul_platform_required_image_alignmentMCU.Config.platformImageAlignment。指定されたプラットフォームの画像データに必要な最小アライメント。
qul_platform_required_pixel_width_alignmentMCU.Config.platformPixelWidthAlignment。指定されたプラットフォームでは、画像幅はこの値の倍数になります。

フォントのCMakeターゲット・プロパティ

非推奨CMakeターゲットプロパティQmlProject の置き換え説明
QUL_FONT_FILESフォントファイルフォントファイルのパスのリスト
qul_auto_generate_glyphsMCU.Config.autoGenerateGlyphsこのオプションは、静的フォントエンジンの自動グリフ生成を制御します。
qul_complex_text_renderingMCU.Config.complexTextRendering複雑なスクリプトのレンダリングを有効にします。
qul_default_font_familyMCU.Config.defaultFontFamily。テキスト要素のデフォルト・フォント・ファミリー。
qul_default_font_qualityMCU.Config.defaultFontQuality。Text要素のデフォルトのフォント品質。
qul_font_cache_preallocMCU.Config.fontCachePrealloc。フォント・キャッシュ・バッファの事前割り当てを制御します。
qul_font_cache_primingMCU.Config.fontCachePriming。フォント・キャッシュのプライミングを有効にします。
qul_font_cache_sizeMCU.Config.fontCacheSizeフォント・エンジンが使用する最大キャッシュ・サイズを設定します。
qul_font_engineMCU.Config.fontEngine提供されたフォントエンジンを有効にします。
qul_font_files_resource_cache_policyMCU.Config.fontFilesCachePolicy。アプリケーションのフォントファイルのコピーを設定します。
qul_font_files_resource_runtime_allocation_typeMCU.Config.fontFilesRuntimeAllocationType。アプリケーションのフォント・ファイルをコピーする際に使用されるランタイム割り当てタイプを設定します。
qul_font_files_resource_storage_sectionMCU.Config.fontFilesStorageSectionアプリケーションのフォント・ファイルに使用されるリソース・ストレージ・セクションを設定します。
qul_font_heap_preallocMCU.Config.fontHeapPreallocフォント・エンジンが使用するヒープ・バッファの事前割り当てを制御します。
qul_font_heap_sizeMCU.Config.fontHeapSizeフォント・エンジンの最大ヒープ・サイズを設定します。
qul_font_vector_outlines_drawingMCU.Config.fontVectorOutlinesDrawing。テキスト・レンダリングにベクトル・アウトラインを使用します。
qul_glyphs_resource_cache_policy (グリフリソースキャッシュポリシー)MCU.Config.glyphsCachePolicy。高速アクセスのために、あらかじめラスタライズされたグリフデータをRAMにコピーするように設定します。
qul_glyphs_resource_runtime_allocation_typeMCU.Config.glyphsRuntimeAllocationTypeプリラスタライズされたグリフデータをRAMにコピーするときに使用されるランタイムアロケーションタイプを設定します。
qul_glyphs_resource_storage_sectionMCU.Config.glyphsStorageSectionプリラスタライズされたグリフデータをRAMにコピーする際に使用するリソース格納セクションを設定します。
qul_max_paragraph_sizeMCU.Config.maxParagraphSize段落の最大サイズを設定します。
qul_controls_styleMCU.Config.controlsStyleControlsスタイルをオーバーライドします。

画像の非推奨ソース・ファイル・プロパティ

非推奨CMakeソース・ファイル・プロパティQmlProject の置き換え説明
qul_resource_cache_policyイメージファイル.MCU.resourceCachePolicyイメージキャッシュポリシーを定義します。
qul_resource_compressionイメージファイル.MCU.resourceCompression画像を圧縮して保存します。
qul_resource_image_pixel_formatイメージファイルMCU.resourceImagePixelFormat画像の優先ピクセルフォーマットを設定します。
qul_resource_optimize_for_rotationイメージファイル.MCU.resourceOptimizeForRotation実行時に画像を回転させるための最適化を有効にします。
qul_resource_optimize_for_scaleイメージファイル.MCU.resourceOptimizeForScale実行時に画像を拡大縮小するための最適化を有効にします。
qul_resource_runtime_allocation_typeImageFiles.MCU.resourceRuntimeAllocationType。アセットランタイムの割り当てタイプを定義します。
qul_resource_storage_sectionImageFiles.MCU.resourceStorageSection。アセットストレージセクションを定義します。

非推奨の CMake コマンド

非推奨の CMake コマンドQmlProject の置き換え説明
qul_add_qml_moduleModuleFiles(<MainProject>.qmlproject 内のノード)QML モジュールをプロジェクトに追加します。モジュールはそれ自身の.qmlproject ファイルを持っていなければなりません。
MCU.Module(<module>.qmlproject内のノード)このノードは、.qmlproject ファイルをモジュールに属するものとして指定し、そのURIを定義します。
qul_add_resourceImageFiles(ノード)画像リソースをターゲットに追加する。
qul_set_maximum_resource_cache_sizeMCU.Config.maxResourceCacheSize(プロパティ)指定されたランタイム・アロケーション・タイプの最大リソース・キャッシュ・サイズを設定します。
qul_target_embed_translationsTranslationFiles(ノード)。.ts ファイルから翻訳を埋め込みます。
qul_target_generate_interfacesInterfaceFiles(ノード)。エクスポートされた C++ クラスを QML コンテキストに公開します。
qul_target_qml_sourcesQmlFiles(Node)QML ソースファイルをターゲットに追加します。

既存プロジェクトの移行

Qt for MCUs 2.4 以降にプロジェクトを移行するには、.qmlproject ファイルを追加します。このファイルはどのような名前でもかまいませんが、本ガイドでは<MainProject>.qmlproject を使用します。あなたのプロジェクトのCMakeLists.txt は、非推奨の CMake API の使用を削除するために大幅な変更が必要です。それらの置き換えは.qmlproject ファイルに属します。

QMLファイル

非推奨CMakeコマンドQmlProject の置き換え説明
qul_target_qml_sourcesQmlFiles(ノード)QML ソースファイルをターゲットに追加します。

QmlFilesノードはプロジェクトにQMLソースファイルを追加する役割を担っています。filesプロパティにソースファイルのリストを指定します。このノードは、qul_target_qml_sources()カスタム CMake コマンドを置き換えます。Qt for MCUs 2.4 に移行する場合は、CMake プロジェクトファイルからこのコマンドへの参照を削除してください。

# DEPRECATED
qul_target_qml_sources(<target> WelcomeScreen.qml Menu.qml)

CMakeLists.txtqul_target_qml_source への参照をすべて、.qmlproject ファイルの<MainProject>.qmlproject

QmlFiles {
    files: [
        "WelcomeScreen.qml",
        "Menu.qml"
    ]
}

C++インターフェース

非推奨CMakeコマンドQmlProject の置き換え説明
qul_target_generate_interfacesInterfaceFiles(ノード)エクスポートされた C++ クラスを QML コンテキストに公開します。

InterfaceFilesノードを使用して、C++ ヘッダーファイルをプロジェクトに追加し、QML コンテキストからアクセス可能なインターフェースを生成します。filesプロパティは、C++ ヘッダーファイルのリストを受け取り、プロジェクトに追加します。また、MCU.qmlImportsプロパティを使用して、インターフェースが必要とする追加の QML インポートを追加することもできます。

InterfaceFilesノードとそのプロパティは、非推奨の CMake コマンドqul_target_generate_interfaces() を置き換えるものです。Qt for MCUs 2.4 以降に移行する場合は、プロジェクトからこのコマンドへの参照をすべて削除してください。

古いバージョンのQt for MCUs は、CMakeLists.txt でインターフェース生成をトリガーします:

# DEPRECATED
qul_target_generate_interfaces(
    <target>
    interface1.h interface2.h
    QML_IMPORTS SomeQmlModule
)

この CMake コマンドのすべてのインスタンスを、プロジェクトの.qmlproject ファイルのInterfaceFiles ノードに置き換えてください:

InterfaceFiles {
    files: [
        "interface1.h",
        "interface2.h"
    ]
    MCU.qmlImports: ["SomeQmlModule"]
}

注意: qmlprojectexporter は生成したインターフェースを出力ディレクトリに保存します。QmlProject はqul_target_generate_interfaces() の引数OUTPUT_DIRECTORY を置き換えるものを持っていません。

画像

非推奨 CMake コマンドQmlProject の置き換え説明
qul_add_resourceイメージファイル(ノード)イメージリソースをターゲットに追加します。
非推奨 CMake ソースファイルプロパティ置き換え (ImageFiles プロパティ)説明
qul_resource_cache_policy (リソースキャッシュポリシー)MCU.resourceCachePolicy(プロパティ)イメージキャッシュポリシーを定義します。
qul_resource_compressionMCU.resourceCompression(プロパティ)画像を圧縮形式で保存します。
qul_resource_image_pixel_formatMCU.resourceImagePixelFormat(プロパティ)画像の優先ピクセルフォーマットを設定します。
qul_resource_optimize_for_rotationMCU.resourceOptimizeForRotation(プロパティ)実行時に画像を回転させるための最適化を有効にします。
qul_resource_optimize_for_scaleMCU.resourceOptimizeForScale(プロパティ)実行時に画像を拡大縮小するための最適化を有効にします。
qul_resource_runtime_allocation_typeMCU.resourceRuntimeAllocationType(プロパティ)アセットのランタイム割り当てタイプを定義します。
qul_resource_storage_sectionMCU.resourceStorageSection(プロパティ)。アセット ストレージ セクションを定義します。

ImageFilesノードを使用して、プロジェクトに画像ファイルを追加し、そのプロパティを設定します。画像アセットは、filesプロパティの下に一覧表示できます。これらのアセットのデフォルト設定を変更する必要がある場合は、アセットを追加するImageFiles ノードに追加します。このノードは、qul_add_resource()set_source_files_properties() CMake API を置き換えます。

以下のスニペットは、プロジェクトのCMakeLists.txt で非推奨の CMake API を使用しています:

# DEPRECATED
set_source_files_properties(
    img1.png
    img2.png
    PROPERTIES
        QUL_RESOURCE_COMPRESSION ON
)
set_source_files_properties(
    img2.png
    PROPERTIES
        QUL_RESOURCE_OPTIMIZE_FOR_ROTATION ON
)

# DEPRECATED
qul_add_resource(<target> FILES img1.png img2.png)

Qt for MCUs 2.4 以降に移行する場合は、これらを<MainProject>.qmlproject の 2 つのImageFiles ノードに置き換えてください:

ImageFiles {
    files: ["img1.png"]
    MCU.resourceCompression: true
}

ImageFiles {
    files: ["img2.png"]
    MCU.resourceCompression: true
    MCU.resourceOptimizeForRotation: true
}

プロジェクトのデフォルトプロパティ

MCU.Configノードで、イメージ・プロパティ一式のデフォルト値を定義することができます。この値は、プロジェクトに追加されたすべてのリソースに適用されます。ただし、ImageFiles ノードでこの値をオーバーライドするアセットを除きます。

前のセクションの例を使用して、resourceCompression をデフォルトで有効にする方法を説明します。これは、プロジェクト内のすべてのリソースに適用されるように、MCU.Configノードを使用します。リソースがデフォルト設定を上書きする必要がある場合は、リソースを追加するImageFiles ノードで上書きできます。最後のImageFilesノードでは、"img3.png" リソースに対してのみ圧縮を無効にしています。

次の例では、MCU.Config ノードを使用して、プロパティのプロジェクトレベルのデフォルト値を設定する方法を示します:

MCU.Config {
    MCU.resourceCompression: true
}

ImageFiles {
    files: ["img1.png"]
}

ImageFiles {
    files: ["img2.png"]
    MCU.resourceOptimizeForRotation: true
}

ImageFiles {
    files: ["img3.png"]
    MCU.resourceCompression: false
}

フォント

非推奨 CMake ターゲットプロパティFontFiles プロパティ説明
QUL_FONT_FILESfiles(プロパティ)フォントファイルのパスのリスト。
非推奨の CMake ターゲットプロパティMCU.Config プロパティ説明
qul_auto_generate_glyphsautoGenerateGlyphs(プロパティ)このオプションは、静的フォントエンジンの自動グリフ生成を制御します。
qul_complex_text_renderingcomplexTextRendering(プロパティ)複雑なスクリプトのレンダリングを有効にします。
qul_controls_stylecontrolsStyle(プロパティ)コントロールのスタイルをオーバーライドします。
qul_default_font_familydefaultFontFamily(プロパティ)Text 要素のデフォルトのフォントファミリ。
qul_default_font_qualitydefaultFontQuality(プロパティ)Text 要素のデフォルトのフォント品質。
qul_font_cache_preallocfontCachePrealloc(プロパティ)フォントキャッシュバッファの事前割り当てを制御します。
qul_font_cache_primingfontCachePriming(プロパティ)フォントキャッシュプライミングを有効にします。
qul_font_cache_sizefontCacheSize(プロパティ)フォントエンジンが使用する最大キャッシュサイズを設定します。
qul_font_enginefontEngine(プロパティ)提供されたフォントエンジンを有効にします。
qul_font_files_resource_cache_policyfontFilesCachePolicy(プロパティ)アプリケーションのフォントファイルのコピーを設定します。
qul_font_files_resource_runtime_allocation_typefontFilesRuntimeAllocationType(プロパティ)アプリケーションのフォントファイルをコピーする際に使用するランタイムアロケーションタイプを設定します。
qul_font_files_resource_storage_sectionfontFilesStorageSection(プロパティ)アプリケーションのフォントファイルに使用するリソース保存セクションを設定します。
qul_font_heap_preallocfontHeapPrealloc(プロパティ)フォントエンジンが使うヒープバッファの事前確保を制御します。
qul_font_heap_sizefontHeapSize(プロパティ)フォントエンジンの最大ヒープサイズを設定します。
qul_font_vector_outlines_drawingfontVectorOutlinesDrawing(プロパティ)テキスト描画にベクターアウトラインを使います。
qul_glyphs_resource_cache_policyglyphsCachePolicy(プロパティ)より高速にアクセスするために、あらかじめラスタライズされたグリフデータを RAM にコピーするように設定します。
qul_glyphs_resource_runtime_allocation_typeglyphsRuntimeAllocationType(プロパティ)プリラスタライズされたグリフデータをRAMにコピーするときに使用するランタイムアロケーションタイプを設定します。
qul_glyphs_resource_storage_sectionglyphsStorageSection(プロパティ)プリラスタライズされたグリフデータをRAMにコピーする際に使用するリソース保存セクションを設定します。
qul_max_paragraph_sizemaxParagraphSize(プロパティ)段落の最大サイズを設定します。

フォントファイルをプロジェクトに追加するには、FontFilesノードのfilesプロパティを使用します。このノードは、QUL_FONT_FILESCMake ターゲット・プロパティを置き換えます。フォントエンジンの選択など、フォント固有の設定はMCU.Configノードを使用して追加できます。先のリストにあるフォント・プロパティはすべて、対応するCMakeターゲット・プロパティに置き換わります。Qt for MCUs 2.4以降に移行する場合は、プロジェクトからこれらのプロパティを削除する必要があります。

# DEPRECATED
set_target_properties(<target>
    PROPERTIES
        QUL_FONT_FILES MyFont.ttf
        QUL_FONT_ENGINE Spark
        QUL_DEFAULT_FONT_FAMILY default
        QUL_MAX_PARAGRAPH_SIZE 80
)

QmlProjectでこの設定を定義するには、2つの異なるノードを使用する必要があります:

FontFiles {
    files: ["MyFont.ttf"]
}

MCU.Config {
    fontEngine: "Spark"
    defaultFontFamily: "default"
    maxParagraphSize: 80
}

Note: addDefaultFontsプロパティは、対応する CMake API を持っていません。このプロパティを使用すると、Qt for MCUs SDK で提供されているデフォルト・フォントの使用を制御できます。このプロパティのデフォルトはtrue です。デフォルト・フォントが不要な場合は、false に設定してください。

モジュール

非推奨CMakeコマンドQmlProject の置き換え説明
qul_add_qml_moduleModuleFiles(<MainProject>.qmlproject 内のノード)QML モジュールをプロジェクトに追加します。モジュールはそれ自身の.qmlproject ファイルを持っていなければなりません。
MCU.Module(<Module>.qmlproject 内のノード)このノードは、.qmlproject ファイルをモジュールに属するものとして指定し、そのURIを定義します。

Qt for MCUs 2.4以降、モジュールはそれ自身の.qmlproject 。このファイルはメイン・プロジェクトの.qmlproject ファイルと同様に機能しますが、モジュールのURIを定義するMCU.Moduleノードのインスタンスを正確に1つ含む必要があります。表に示すように、<MainProject>.qmlprojectModuleFiles ノードと、各カスタム・モジュール用の個別の.qmlproject ファイルの組み合わせは、非推奨の CMake コマンドqul_add_qml_module() に取って代わるものです。

メインプロジェクトにモジュールを含める

ModuleFilesノードのfilesプロパティには、カスタム・モジュールの.qmlproject ファイルへのパスを指定します。

古いバージョンのQt for MCUs では、qul_add_qml_module CMake API を使用して、プロジェクトにモジュールを追加できました。次の例は、その方法を示しています:

# DEPRECATED
qul_add_qml_module(
    <target>
    URI MyModule
    QML_FILES CustomComponent.qml
)

Qt for MCUs 2.4 以降では、プロジェクトの.qmlproject ファイルにモジュールを追加できます。<MainProject>.qmlproject 2.4 以降、モジュールをプロジェクトの ファイルに追加することができます。次の例は、 でその方法を示しています:

ModuleFiles {
    files: ["<Module>.qmlproject"]
}

カスタムモジュールの作成

モジュールの.qmlproject ファイルには、モジュールのURIを定義するMCU.Moduleノードのインスタンスが1つだけ必要です。このノードを除いて、モジュールの.qmlproject ファイルは他の.qmlproject ファイルと同じように動作します。

次のスニペットは、前のセクションで使用した<Module>.qmlproject の完全な内容です。これはMyModule というURIを持つモジュールについて記述したもので、CustomComponent.qml というQMLファイルを1つ持っています。

import QmlProject 1.3

Project {
    MCU.Module {
        uri: "MyModule"
    }

    QmlFiles {
        files: ["CustomComponent.qml"]
    }
}

Qt Quick Ultraliteモジュール

ModuleFilesノードは、Qt for MCUs SDK の一部であるモジュールをプロジェクトに追加することもできます。この目的でModuleFiles ノードを使用する場合は、対応するtarget_link_libraries() をプロジェクトの CMakeListst.txt から削除してください。

ModuleFiles ノードにはMCU.qulModules というプロパティがあり、プロジェクトに追加するモジュールを指定する文字列のリストを指定します。

ModuleFiles {
    MCU.qulModules: [
        "Controls",
        "ControlsTemplates",
        "Shapes",
        "Timeline"
    ]
}

注: ModuleFiles ノードを使用して、カスタム・モジュール以外にQt for MCUs モジュールにリンクすることもできます。カスタムモジュールとQt for MCUs モジュールの両方を同じModuleFiles ノードに追加することもできます。

翻訳

非推奨 CMake コマンドQmlProject の置き換え説明
qul_target_embed_translations翻訳ファイル(ノード).ts ファイルから翻訳を埋め込みます。

TranslationFilesノードは、非推奨の CMake カスタムコマンドqul_target_embed_translations() を置き換えるものです。Qt for MCUs 2.4以降に移植する場合は、このコマンドへの参照をすべて削除してください。

このノードは、filesプロパティで翻訳ファイル(拡張子.ts )のリストを受け入れます。MCU.omitSourceLanguagebooleanプロパティを使用すると、アプリケーションでソース言語を使用するかどうかを制御できます。

CMakeLists.txt 非推奨コマンドを使用します:

# DEPRECATED
qul_target_embed_translations(
    <target>
    translation.nb_NO.ts
    translation.lv_LV.ts
    [OMIT_SOURCE_LANGUAGE]
)

<MainProject>.qmlprojectTranslationFiles ノードが上記のコマンドに置き換わります:

TranslationFiles {
    files: [
        "translation.nb_NO.ts",
        "translation.lv_LV.ts"
    ]
    MCU.omitSourceLanguage: true|false
}

最大リソースキャッシュサイズ

非推奨 CMake コマンドQmlProject の置き換え (MCU.Config ノード)説明
qul_set_maximum_resource_cache_sizemaxResourceCacheSize(プロパティ)与えられたランタイムアロケーションタイプの最大リソースキャッシュサイズを設定します。

古いバージョンのQt for MCUs を使用するすべてのプロジェクトは、qul_set_maximum_resource_cache_size()CMake API を使用して、異なるアロケーションタイプのリソースキャッシュサイズを定義します。Qt for MCUs 2.4 以降、この CMake API は非推奨です。QmlProjectの対応するノード(MCU.ConfigノードのmaxResourceCacheSizeプロパティ)で、このAPIへの参照をすべて置き換えてください。

次のスニペットは、プロジェクトのCMakeLists.txtqul_set_maximum_resource_cache_size() を使用する例を示しています:

# DEPRECATED
qul_set_maximum_resource_cache_size(
    <target>
    CACHE_SIZE 512
)
qul_set_maximum_resource_cache_size(
    <target>
    CACHE_SIZE 1024
    RUNTIME_ALLOCATION_TYPE 1
)
qul_set_maximum_resource_cache_size(
    <target>
    CACHE_SIZE 2048
    RUNTIME_ALLOCATION_TYPE 128
)

<MainProject>.qmlproject ファイルのmaxResourceCacheSize プロパティは、上記のスニペットを以下のように置き換えます:

MCU.Config {
    maxResourceCacheSize: [
        [512],      // 512 bytes cache for resources using the default runtime allocation type
        [1024, 1],  // 1024 bytes cache for resources using runtime allocation type 1
        [2048, 128] // 2048 bytes cache for resources using runtime allocation type 128
    ]
}

ターゲットとアプリケーションのバリアント

ターゲット・プラットフォームが異なれば、同じアプリケーションでも異なるソース・ ファイルや異なるプロパティ・コンフィギュレーションを使用したり、アプリケーション・ バリアントをコンフィギュレーションする必要があることがあります。このセクションでは、Qt for MCUs 2.4 以降でこれを行う方法について説明します。

ファイルバリアント

ファイルセレクタの考え方は、特定のターゲット用にプロジェクトをビルドするときに、ソースファイルやリソースのどのバリアントを使うかを区別する簡単な方法を提供します。ファイルセレクタを使うときは、ファイルのバリアントを正しいディレクトリに置きます。セレクタを適切に使用する方法についてのより詳細な説明は、fileSelector のドキュメントを参照してください。CMake でターゲットを追加するときは、qul_add_target()SELECTORS 引数を使用して、特定のターゲットのファイルバリアントを選びます。

# This target uses the default variant of all files
qul_add_target(<target>
    QML_PROJECT <MainProject>.qmlproject
)

# This target uses the "big" variant of all files where the variant is available
qul_add_target(<target_big>
    QML_PROJECT <MainProject>.qmlproject
    SELECTORS big
)

また、fileSelectorプロパティを使って、特定の.qmlproject ファイルやQmlProjectファイルの特定のノードでのみファイルセレクタを使用することも可能です。次のスニペットは、small ファイルセレクタが利用可能なすべてのノードで使用し、landscape セレクタはMainScreen.qml ソースファイルでのみ使用します。

import QmlProject 1.3
Project {
    MCU.Config {
        fileSelector: ["small"]
    }

    QmlFiles {
        files: ["MainScreen.qml"]
        fileSelector: ["landscape"]
    }

    ImageFiles {
        files: ["img.png"]
    }
}

各ターゲットのQmlProjectファイル

各ターゲットが画像やフォントなどの特定のリソースを異なる方法で扱う場合、その設定は通常、.qmlproject ファイル内のMCU.ConfigノードまたはImageFilesノードにあります。この場合、異なるコンフィギュレーション用に異なる.qmlproject ファイルを用意する必要があるかもしれません。例えば、2つの異なるターゲット・プラットフォーム用のプロジェクトで、そのうちの1つだけがフラッシュ・メモリが不十分で、特定のイメージ資産を圧縮する必要がある場合です。このような場合は、2つの別々のqmlproject ファイルを作成します。

<MainProject>.qmlproject:

ImageFiles {
    files: ["img.png"]
}

<MainProject>_smallflash.qmlproject:

ImageFiles {
    files: ["img.png"]
    MCU.resourceCompression: true
}

この場合、CMakeでターゲットに正しいQmlProjectを渡してください。

# Adding target with limited flash memory
qul_add_target(
    <target_smallflash>
    QML_PROJECT <MainProject>_smallflash.qmlproject
)

# Adding target with more flash memory
qul_add_target(
    <target>
    QML_PROJECT <MainProject>.qmlproject
)

カスタムプラットフォームポート

カスタムプラットフォームポートのプロセスはQt for MCUs 2.3 と同じです。カスタムプラットフォームポートをQt for MCUs 2.4以降に移行する方法については、プラットフォーム移行ガイドを参照してください。

プラットフォーム・ポートの移行

.qmlprojectconfig ファイルには、プラットフォームのデフォルト設定を記述します。このファイルは.qmlproject ファイルと同じ構文を持ち、qmlprojectexporter はこれをプラットフォーム・レベルのデフォルト値のソースとして使用します。

Qt for MCUs 2.3以降のプラットフォーム・ポートには、すでにこのファイルがあるはずです。古いプラットフォームをQt for MCUs 2.3以降に移植するための詳細な手順については、 Qt for MCUs 2.3へのプラットフォーム移行ガイドを参照してください。

CMakeでQmlProjectを使う

Qt for MCUs 2.4 以降、qmlprojectexporterツールはプロジェクトの.qmlproject ファイルを解析し、関連するツールを実行してターゲット・プラットフォーム用のコードを生成します。qmlprojectexporter 生成されたファイルはすべて、あらかじめ決められた出力ディレクトリに置かれます。これにより、Qt for MCUs をお好みのビルド・システムに簡単に統合できます。qmlprojectexporter が何をするのか、どのように手動で使うのかの詳細については、qmlprojectexporter のドキュメントを参照してください。以下のセクションでは、CMake からこのツールを使用する方法を示します。

以前のバージョンのQt for MCUs と比較して、CMake API の変更は重要です。すべてのアセット、ソースファイル、およびプロパティ設定が.qmlproject ファイルに格納されるようになりました。既存のqul_add_target()カスタム CMake コマンドは、引数として.qmlproject ファイルを受け取ります。この引数は、qmlprojectexporter を実行し、プロジェクトのソースファイルを生成し、それらのファイルのビルドターゲットを作成するよう CMake に要求します。以下のスニペットは、.qmlproject ファイルを使用して、CMake を使用してQt for MCUs プロジェクトをビルドする方法を示しています。

cmake_minimum_required(VERSION 3.21.1)

project(<project_title> VERSION 0.0.1 LANGUAGES C CXX ASM)

find_package(Qul)

# This is where qmlprojectexporter is invoked
qul_add_target(<target>
    QML_PROJECT <MainProject>.qmlproject
    [GENERATE_ENTRYPOINT]
)

app_target_setup_os(<target>)

注: qul_add_target()GENERATE_ENTRYPOINT オプションを使用してエントリーポイントの生成を促す場合、.qmlproject ファイルでmainFileプロパティを使用してエントリーポイントの QML ファイルを定義する必要があります。詳細はqul_add_targetを参照してください。

プロジェクトの移行例

次の例は、Qt for MCUs 2.4 以降で、既存の CMake プロジェクトを QmlProject フォーマットに移行する方法を示しています。この例では、サンプルのCMakeLists.txt.qmlproject ファイルの内容のみを示します。

移行されたプロジェクトはまだCMakeでビルドされていますが、非推奨のAPIがないため、CMakeLists.txt 、よりシンプルになっています。このプロジェクトには2つの新しい.qmlproject ファイルがあります。1つはモジュール用、もう1つはメインプロジェクト用です。

CMakeプロジェクト

このサンプルプロジェクトは非推奨のCMake APIを使用しているので、次のセクションで移行方法を示します。以下は、元のプロジェクトのCMakeLists.txt

CMakeFiles.txtです:

cmake_minimum_required(VERSION 3.21.1.)

project(<project> VERSION 1.0 LANGUAGES C CXX ASM)

find_package(Qul)

qul_add_target(<target>)

# DEPRECATED
# Add QML sources
qul_target_qml_sources(<target> MainScreen.qml Menu.qml)

# DEPRECATED
# Generate QML interfaces to C++ code
qul_target_generate_interfaces(<target> test_model.h QML_IMPORTS QtQuick)

# DEPRECATED
# Add QML module
qul_add_qml_module(
    <target>
    URI MyModule
    QML_FILES CustomComponent.qml
)

# DEPRECATED
# Add translation files (keep source language)
qul_target_embed_translations(<target> translation.fr_FR.ts translation.de_DE.ts)

# DEPRECATED
# Set default setting for resource compression
set(QUL_DEFAULT_RESOURCE_COMPRESSION ON)

# DEPRECATED
# Set resource file properties
set_source_files_properties(
    progress_spinner.png
    PROPERTIES
        QUL_OPTIMIZE_FOR_ROTATION ON
)
set_source_files_properties(
    background_city.png
    background_forest.png
    PROPERTIES
        QUL_RESOURCE_CACHE_POLICY "OnDemand"
        QUL_RESOURCE_STORAGE_SECTION "CustomSegment"
        QUL_RESOURCE_RUNTIME_ALLOCATION_TYPE "128"
        QUL_RESOURCE_COMPRESSION OFF
)

# DEPRECATED
# Add image resources
qul_add_resource(
    <target> FILES
        progress_spinner.png
        background.png
        background_city.png
        background_forest.png
)

# DEPRECATED
# Add fonts
set_target_properties(
    <target>
    PROPERTIES
        QUL_FONT_ENGINE "Spark"
        QUL_FONT_FILES "font.ttf"
        QUL_DEFAULT_FONT_FAMILY "default"
        QUL_MAX_PARAGRAPH_SIZE 80
)

# DEPRECATED
# Define resource cache sizes
qul_set_maximum_resource_cache_size(
    <target>,
    32800
)
qul_set_maximum_resource_cache_size(
    <target>,
    15600,
    RUNTIME_ALLOCATION_TYPE 1
)
qul_set_maximum_resource_cache_size(
    <target>,
    512900,
    RUNTIME_ALLOCATION_TYPE 128
)

# Link the Qul::Controls library
target_link_libraries(<target> PRIVATE Qul::Controls)

# Setup os (baremetal or freertos)
app_target_setup_os(<target>)

# Generate default entrypoint from QML source
app_target_default_entrypoint(<target> MainScreen)

移行されたプロジェクト

Qt for MCUs 2.4以降、このプロジェクトには2つの.qmlproject ファイルが必要です。1つはモジュール用、もう1つはメインプロジェクト用です。

CMakeでビルドする場合、qul_add_target コマンドはメインプロジェクトの.qmlproject ファイルをQML_PROJECT 引数として受け取り、必要なファイルを生成するようqmlprojectexporter に促します。

CMakeLists.txt:

cmake_minimum_required(VERSION 3.21.1.)

project(<project> VERSION 1.0 LANGUAGES C CXX ASM)

find_package(Qul)

# Add the target using a QmlProject file
# Generate a custom entrypoint based on the mainFile property with GENERATE_ENTRYPOINT
qul_add_target(<target> QML_PROJECT MainProject.qmlproject GENERATE_ENTRYPOINT)

app_target_setup_os(<target>)

MainProject.qmlproject:

import QmlProject 1.3

Project {

    mainFile: "MainScreen.qml"

    QmlFiles {
        files: ["Menu.qml"]
    }

    InterfaceFiles {
        files: ["test_model.h"]
        MCU.qmlImports: ["QtQuick"]
    }

    ModuleFiles {
        files: ["MyModule.qmlproject]
        MCU.qulModules: [
            "Qul::Controls"
        ]
    }

    // Image resources are added in ImageFiles nodes.
    // Use one node per unique configuration of properties
    ImageFiles {
        files: [
            "background_city.png",
            "background_forest.png"
        ]
        MCU.resourceCachePolicy: "OnDemand"
        MCU.resourceStorageSection: "CustomSegment"
        MCU.resourceRuntimeAllocationType: 128
        MCU.resourceCompression: false
    }

    ImageFiles {
        files: ["progress_spinner.png"]
        MCU.resourceOptimizeForRotation: true
    }

    ImageFiles {
        files: ["background.png"]
    }

    FontFiles {
        files: ["font.ttf"]
    }

    TranslationFiles {
        files: [
            "translation.fr_FR.ts",
            "translation.de_DE.ts"
        ]
    }

    MCU.Config {
        // Font properties
        fontEngine: "Spark"
        defaultFontFamily: "default"
        maxParagraphSize: 80

        // Image properties
        resourceCompression: true

        // Storage
        maxResourceCacheSize: [
            [32800],
            [15600, 1],
            [512900, 128]
        ]

    }
}

MyModule.qmlproject:

import QmlProject 1.3

Project {
    MCU.Module {
        uri: "MyModule"
    }

    QmlFiles {
        files: ["CustomComponent.qml"]
    }
}

QmlProjectマニュアルも参照してください


Qt ライセンスによっては利用可能です。