このページについて

C

CMakeプロジェクトの生成

このページでは、CMakeプロジェクトの生成に関する追加情報を扱います。

注: 詳細については、 Qt Quick のUltraliteプロジェクト生成に関する一般的な手順参照してください

CMakeプロジェクトの初期エクスポート

以下の呼び出しを作成します。qmlprojectexporter

オプション説明
${QUL_DIR}/bin/qmlprojectexporter呼び出すツール。
path/to/some.qmlprojectエクスポートするQMLプロジェクトファイル
--platform <platform_name>エクスポートするプラットフォーム名
--project-type cmakeCMake出力プロジェクト形式を使用する
--toolchain <compiler_id>これは、生成されるオプションがどのコンパイラタイプと互換性を持つべきかに関する情報を提供します。可能なオプションは、gnughsiar 、またはmsvc です。

注: GCC互換のすべてのコンパイラについては 、「gnu」を使用してください。

--cxx-standard <C++ standard>オプションで、QMLプロジェクトファイルのInterfaceFilesブロックにリストされているインターフェースファイルを処理する際に使用するC++標準を指定します。
--outdir <path>プロジェクトがエクスポートされるパス。
--include-ide-generated-hw-code
--ide-sources-outdir <outdir>
エクスポートにサードパーティのプラットフォームコードを含めるには、次の 2 つのオプションを使用します。出力ディレクトリは、プラットフォームの出力ディレクトリ内に配置することができます。例えば、<platform_outdir>/QtMCUs/platform などですが、その他の場所でも問題ありません。STM32CubeIDE や MCUXpresso IDE などのサードパーティ製 IDE にエクスポートする場合は、これらをスキップすることをお勧めします。
--generate-entrypointこのオプションを指定すると、QMLアプリケーションを実行するためのデフォルトコードを含むmain関数が生成されます。
--boarddefaults=<qul_dir>/platform/boards/<platform>/cmake/BoardDefaults_32bpp_default.qmlprojectconfig色深度やアセット形式に関する情報を指定するには、ボードごとにボードのデフォルト設定を指定する必要があります。
--selector a[,b...]QMLプロジェクトでセレクタを使用してQMLファイルやリソースを検索する場合は、それらをカンマ区切りのリストとして指定してください。

Qt Quick Ultralite ライブラリのカスタムビルド用オプション

プラットフォームエクスポート用のメタデータを作成するには、メタデータ作成を有効にする必要があります。Qt Quick Ultralite ビルドディレクトリ内の `.cmake/api/v1/query/codemodel-v2` 配下に、空のファイルと、必要に応じてフォルダを作成してください。CMake を実行して再構成し、再度ビルドしてください。

オプション説明
--qul-source-dir ${QUL_DIR}Qt Quick Ultraliteのソースツリー。これは、Qt Quick Ultraliteツールがカスタム場所に配置されている場合にのみ指定する必要があります。
--qul-build-dir <dir>Qt Quick Ultralite コアライブラリのビルドディレクトリ。Qt Quick Ultralite コアライブラリを(再)ビルドする場合は、これを指定する必要があります。
--verbose実行時に詳細なコマンドを表示する(オプション)qmlprojectexporter
--platform-boards-sources-dir=<dir>ボードのソースが${QUL_DIR}/platform/boards にない場合は、このオプションを使用してパスを指定してください。

CMakeプロジェクトファイルを作成する

上記のコマンドでプロジェクトをエクスポートすると、出力フォルダに CMake パッケージが作成されます。

このパッケージを使用するには、CMake プロジェクトにいくつかの行を追加する必要があります。

project(<name> LANGUAGES C CXX ASM)

ASM は、プラットフォームやコンパイラによってはエクスポート時にアセンブリファイルが生成されるため、重要です。このオプションが指定されていない場合、CMake は通知なしにすべてのアセンブリファイルを黙って削除してしまいます。

find_package(QulExport REQUIRED PATHS "<exported_path>" NO_DEFAULT_PATH)

これにより、エクスポートされた情報が現在のプロジェクトに読み込まれます。find_package() に指定するPATHS 変数は、プロジェクトをエクスポートしたパスを指すようにする必要があります。

エクスポートされた情報は CMake 変数リストとして提供され、CMake ターゲットに追加する必要があります。これらの変数の詳細については、次の章を参照してください。

target_sources(<my_target> PRIVATE ${QulExport_SOURCES})
target_compile_definitions(<my_target> PRIVATE ${QulExport_DEFINITIONS})
target_include_directories(<my_target> PRIVATE ${QulExport_INCLUDES})
target_compile_options(<my_target> PRIVATE ${QulExport_COMPILE_OPTIONS})
target_link_options(<my_target> PRIVATE ${QulExport_LINK_OPTIONS})
target_link_libraries(<my_target> PRIVATE ${QulExport_LIBRARIES})

お使いのビルドシステムがリンカセクションを処理しない場合は、提供されたリンカスクリプトをオプションに追加する必要があります。

foreach(LINKER_SCRIPT IN LISTS QulExport_LINKER_SCRIPTS)
    if (IAR)
        target_link_options(mcu_minimal PRIVATE "SHELL:--config ${LINKER_SCRIPT}")
    else()
        target_link_options(mcu_minimal PRIVATE "SHELL:-T ${LINKER_SCRIPT}")
    endif()
    set_target_properties(mcu_minimal PROPERTIES LINK_DEPENDS "${LINKER_SCRIPT}")
endforeach()

公開されている CMake 変数に関する詳細

すべてのソースおよびフラグは、find_package() の後に続く変数を通じて公開されます。

find_package(QulExport REQUIRED PATHS "<exported_path>" NO_DEFAULT_PATH)
  • QulExport_SOURCES には、コンパイル対象の C/C++/ASM ソースファイルのリストが含まれています。
  • QulExport_DEFINITIIONS には、設定が必要なコンパイラ定義のリストが含まれます。
  • QulExport_INCLUDES には、インクルードパスのリストが含まれています。
  • QulExport_COMPILE_OPTIONS には、必要なコンパイラオプションのリストが含まれています。
  • QulExport_LINK_OPTIONS 必要なリンカーオプションのリストが含まれています。
  • QulExport_LIBRARIES リンク対象となるライブラリのリストが含まれています。
  • QulExport_LINKER_SCRIPTS リンキング時に使用するリンカースクリプトのリストが含まれています。

上級ユーザー

前の章のような組み合わせ変数では不十分な場合のために、Qt Quick Ultralite コンポーネントごとに公開される情報を細分化する変数がさらに用意されています。これらの変数は、同じ命名規則に従いますが、コンポーネント名が追加されています。

エクスポートされたアプリケーションに関する情報は、以下で公開されます。

  • QulExport_APPLICATION_SOURCES
  • QulExport_APPLICATION_DEFINITIONS
  • QulExport_APPLICATION_INCLUDES
  • QulExport_APPLICATION_LIBRARIES
  • QulExport_APPLICATION_COMPILE_OPTIONS
  • QulExport_APPLICATION_LINK_OPTIONS
  • QulExport_APPLICATION_LINKER_SCRIPTS

エクスポートされたプラットフォーム・ポートに関する情報は、以下で公開されています。

  • QulExport_PLATFORM_SOURCES
  • QulExport_PLATFORM_DEFINITIONS
  • QulExport_PLATFORM_INCLUDES
  • QulExport_PLATFORM_LIBRARIES
  • QulExport_PLATFORM_COMPILE_OPTIONS
  • QulExport_PLATFORM_LINK_OPTIONS
  • QulExport_PLATFORM_LINKER_SCRIPTS

アプリケーションにもプラットフォームにも割り当てられていない一般的な情報は、以下で公開されています。

  • QulExport_GENERIC_SOURCES
  • QulExport_GENERIC_DEFINITIONS
  • QulExport_GENERIC_INCLUDES
  • QulExport_GENERIC_LIBRARIES
  • QulExport_GENERIC_COMPILE_OPTIONS
  • QulExport_GENERIC_LINK_OPTIONS
  • QulExport_GENERIC_LINKER_SCRIPTS

QML プロジェクトのエクスポートコマンドに --generate-entrypoint オプションが含まれている場合、生成された main 関数の情報も公開されます。

  • QulExport_ENTRYPOINT_ITEM には、メインの QML アイテムの名前が含まれます。
  • QulExport_ENTRYPOINT_NAME には、メイン関数の名前が含まれます。
  • QulExport_ENTRYPOINT_FUNCTION には、シグネチャ付きの関数名が格納されます。
  • QulExport_ENTRYPOINT_PROTOTYPE には、メイン関数のプロトタイプが含まれます。
  • QulExport_ENTRYPOINT_FILEPATH には、メイン関数を含むソースファイルへのパスが含まれます。

自動生成された CMake プロジェクト

QML アプリケーションをエクスポートする際、qmlprojectexporter は、直接使用可能な `CMakeLists.txt ` を生成します。CMake ターゲット名は `--project-target-name ` で指定するか、省略した場合はデフォルトで QML プロジェクト名が使用されます。このファイルは `add_subdirectory()` とともに使用することもできますが、主にデモ目的で用意されています。エクスポート結果を CMake に統合する主な方法は、前述の `find_package() ` メソッドを使用することです。

プラットフォームを使用しないエクスポート済みプロジェクトの統合

Zephyr やESP-IDFのようなビルドシステムでは、プラットフォームコードはビルドシステムから提供されます。このような場合、QMLアプリケーションと、独自にビルドされたQt Quick Ultraliteコアライブラリのみをエクスポートします。

ソースからのQt Quick Ultraliteのビルド」に記載されている手順に従って、カスタムアーキテクチャ向けのビルドを構築およびインストールしてください。

mkdir -p <builddir>/.cmake/api/v1/query && touch <builddir>/.cmake/api/v1/query/codemodel-v2
cmake
    -S $QUL_ROOT
    -B <builddir>
    -DQul_ROOT=$QUL_ROOT
    -DQUL_TARGET_TOOLCHAIN_DIR=<toolchaindir>
    -DQUL_GENERATORS=$QUL_ROOT/lib/cmake/Qul/QulGenerators.cmake
    -DCMAKE_TOOLCHAIN_FILE=$QUL_ROOT/lib/cmake/Qul/toolchain/armgcc.cmake
    -DQUL_PLATFORM_ARCHITECTURE=cortex-m7-hf-fpv5-d16
    -DQUL_BUILD_PLATFORM=OFF
    -DCMAKE_INSTALL_PREFIX=<installdir>
    -DQUL_PLATFORM_ARCHITECTURE_FILE=$QUL_ROOT/platform/architecture/cortex-m7-hf-fpv5-d16/armgcc/architecture.cmake
make -C <builddir> install

このビルドから、プロジェクトをターゲットのビルドシステムにエクスポートできます。

$QUL_ROOT/bin/qmlprojectexporter
    $QUL_ROOT/examples/chess/mcu_chess.qmlproject
    --boarddefaults=<path/to/>BoardDefaults_24bpp_default.qmlprojectconfig
    --toolchain GNU
    --cxx-standard=c++17
    --platform <platform_name>
    --outdir <target_dir>
    --qul-source-dir <installdir>
    --project-type cmake
    --no-export-platform
    --generate-entrypoint
    --platform-metadata <installdir>/lib/cortex-m7-hf-fpv5-d16-export.json

この手順が完了したら、「CMakeプロジェクトファイルの作成」に進んでください。

特定の Qt ライセンスの下で利用可能です。
詳細はこちらをご覧ください。