C
CMakeプロジェクトの生成
このページでは、CMakeプロジェクトの生成に関する追加情報を扱います。
注意: 詳細は Qt Quick Ultralite プロジェクト生成の一般的な説明をお読みください。
CMakeプロジェクトの初期エクスポート
への呼び出しを構築します。qmlprojectexporter
| オプション | 説明 |
|---|---|
${QUL_DIR}/bin/qmlprojectexporter | 呼び出されるツール |
path/to/some.qmlproject | エクスポートする QML プロジェクトファイル |
--platform <platform_name> | エクスポートするプラットフォーム名 |
--project-type cmake | CMake出力プロジェクトフォーマットを使用する |
--toolchain <compiler_id> | これは、生成されるオプションがどのコンパイラと互換性があるかについての情報を提供します。指定できるオプションはgnu 、ghs 、iar 、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アプリケーションを実行するためのデフォルトコードを持つメイン関数が生成されます。 |
--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プロジェクトファイルの作成に進みます。