このページでは

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>これは、生成されるオプションがどのコンパイラと互換性があるかについての情報を提供します。指定できるオプションはgnughsiarmsvc のいずれかです。

注: すべての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アプリケーションを実行するためのデフォルトコードを持つメイン関数が生成されます。
--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_DEFINITIONS
  • QulExport_APPLICATION_INCLUDES
  • QulExport_APPLICATION_LIBRARIES
  • QulExport_APPLICATION_COMPILE_OPTIONS
  • QulExport_APPLICATION_LINK_OPTIONS。
  • QulExport_APPLICATION_LINKER_SCRIPTS

エクスポートされたプラットフォームポートの情報は

  • で公開されます。
  • 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オプションが含まれている場合、生成されたメイン関数の情報も公開されます。

  • 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 のライセンスによっては利用可能です。