C
Linux ターゲットでQt Quick Ultralite を使う
このガイドでは、Linuxターゲット上でQt Quick Ultraliteを使って開発を始めるために必要なことを説明します。
サポートされるアーキテクチャ、プラットフォーム、および Linux ツールチェーン
Qt Quick Ultraliteは以下のハードウェアをサポートしています:
| ハードウェアボード | MPU | コンパイラ |
|---|---|---|
| MCIMX93-EVK | i.MX 93 MPU | GNU Arm GCC 12.3.rel1 |
開発環境要件
前提条件
Qt Quick Ultralite for Linuxをビルドするには、以下のものが必要です:
- Qt Maintenance Tool にある、指定したターゲット用のBoot to Qt パッケージ。
- または、指定されたターゲットのYocto sysrootとツールチェーン。
環境のセットアップ
CMAKE_TOOLCHAIN_FILE オプションを使ってカスタムツールチェーンファイルを指定し、Linuxターゲット用にプロジェクトをビルドするときにどのツールとsysrootを使うかをCMakeに伝える必要があります。
Boot to Qt パッケージからqt.toolchain.cmake toolchain ファイルを使用する。
ターゲット・ボード用のBoot to Qt パッケージがある場合、QT_TOOLCHAIN_INCLUDE_FILE にQt for MCUs インストールからの補足の boot2qt.cmake toolchain ファイルを設定して、ホストの sysroot からqt.toolchain.cmake toolchain ファイルを使用できます。以下は、MCIMX93-EVKボードの例です:
export QUL_ROOT=$HOME/Qt/QtMCUs/2.12.0 export BOOT2QT_DIR=$HOME/Qt/6.8.4/Boot2Qt cd $QUL_ROOT mkdir custom_build cd custom_build cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=MinSizeRel -DQul_ROOT=$QUL_ROOT -DCMAKE_TOOLCHAIN_FILE=$BOOT2QT_DIR/imx93-11x11-lpddr4x-evk/toolchain/sysroots/x86_64-pokysdk-linux/usr/lib/cmake/Qt6/qt.toolchain.cmake -DQT_TOOLCHAIN_INCLUDE_FILE=$QUL_ROOT/lib/cmake/Qul/toolchain/boot2qt.cmake -DQUL_GENERATORS=$QUL_ROOT/lib/cmake/Qul/QulGenerators.cmake -DQUL_PLATFORM=generic-linux -DQUL_LINUX_RENDER_BACKEND=linuxfb -DQUL_BUILD_EXAMPLES=off -DQUL_BUILD_DEMOS=off cmake --build .
set QUL_ROOT=C:\Qt\QtMCUs\2.12.0 set BOOT2QT_DIR=C:\Qt\6.8.4\Boot2Qt cd %QUL_ROOT% mkdir custom_build cd custom_build cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=MinSizeRel -DQul_ROOT=%QUL_ROOT% -DCMAKE_TOOLCHAIN_FILE=%BOOT2QT_DIR%\imx93-11x11-lpddr4x-evk\toolchain\sysroots\x86_64-w64-mingw32\usr\lib\cmake\Qt6\qt.toolchain.cmake -DQT_TOOLCHAIN_INCLUDE_FILE=%QUL_ROOT%\lib\cmake\Qul\toolchain\boot2qt.cmake -DQUL_GENERATORS=%QUL_ROOT%\lib\cmake\Qul\QulGenerators.cmake -DQUL_PLATFORM=generic-linux -DQUL_LINUX_RENDER_BACKEND=linuxfb -DQUL_BUILD_EXAMPLES=off -DQUL_BUILD_DEMOS=off cmake --build .
手動でツールチェーンファイルを作成する
任意のLinuxターゲットの場合、CMakeにコンパイラツールの場所、ターゲットのsysroot、使用するコンパイラフラグを指示するツールチェーンファイルを手動で作成する必要があります。以下はツールチェーンファイルの例で、特定のターゲットに応じてカスタマイズすることができます。
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
SET(COMPILER_FOLDER_NAME "armgcc")
SET(QUL_COMPILER_NAME "armgcc")
IF(WIN32)
SET(TOOLCHAIN_EXT ".exe")
ELSE()
UNSET(TOOLCHAIN_EXT)
ENDIF()
set(QT_HOST_PATH "/path/to/Qt/<version>/<target>")
set(TOOLCHAIN_PREFIX "/path/to/target/toolchain/aarch64-poky-linux")
set(CMAKE_SYSROOT "/path/to/target/sysroot")
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc${TOOLCHAIN_EXT})
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++${TOOLCHAIN_EXT})
set(CMAKE_ASM_COMPILER ${TOOLCHAIN_PREFIX}-gcc${TOOLCHAIN_EXT})
set(CMAKE_AR ${TOOLCHAIN_PREFIX}-gcc-ar${TOOLCHAIN_EXT})
set(CMAKE_RANLIB ${TOOLCHAIN_PREFIX}-gcc-ranlib${TOOLCHAIN_EXT})
set(COMPILER_FLAGS "-mcpu=cortex-a55\
-march=armv8.2-a+crypto -mbranch-protection=standard \
-fstack-protector-strong")
set(CMAKE_C_FLAGS_INIT "${COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_INIT "${COMPILER_FLAGS}")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)このツールチェーンファイルは、generic-linuxプラットフォームのビルドに次のように使うことができる:
上のUltraliteレンダラexport QUL_ROOT=$HOME/Qt/QtMCUs/2.12.0 mkdir custom_build cd custom_build cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=MinSizeRel -DQul_ROOT=$QUL_ROOT -DCMAKE_TOOLCHAIN_FILE=$HOME/path/to/custom-toolchain.cmake -DQUL_PLATFORM=generic-linux -DQUL_GENERATORS=$QUL_ROOT/lib/cmake/Qul/QulGenerators.cmake -DCMAKE_INSTALL_PREFIX=$QUL_ROOT -DQUL_LINUX_RENDER_BACKEND=linuxfb -DQUL_BUILD_EXAMPLES=off -DQUL_BUILD_DEMOS=off cmake --build .
set QUL_ROOT=C:\Qt\QtMCUs\2.12.0 cd %QUL_ROOT% mkdir custom_build cd custom_build cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=MinSizeRel -DQul_ROOT=%QUL_ROOT% -DCMAKE_TOOLCHAIN_FILE=C:\path\to\custom-toolchain.cmake -DQUL_PLATFORM=generic-linux -DQUL_GENERATORS=%QUL_ROOT%\lib\cmake\Qul\QulGenerators.cmake -DCMAKE_INSTALL_PREFIX=%QUL_ROOT% -DQUL_LINUX_RENDER_BACKEND=linuxfb -DQUL_BUILD_EXAMPLES=off -DQUL_BUILD_DEMOS=off cmake --build .
Qt Quick Linuxレンダラー・バックエンドのUltralite
Qt Quick Ultralite on Linuxプラットフォームの移植版には、drm とlinuxfb の2つのレンダラー バックエンドがあります。レンダラー バックエンドは、フレームバッファを割り当て、新しいコンテンツをディスプレイに表示します。
レンダラー・バックエンドdrm を使用するには、cmake 設定コマンドを実行するときに-DQUL_LINUX_RENDER_BACKEND=drm を指定します。それ以外の場合は、-DQUL_LINUX_RENDERER_BACKEND=linuxfb を指定して、linuxfb レンダラー・バックエンドを使用します。
Qt Quick Linux入力上のUltralite
デフォルトでは、Linuxプラットフォーム上のQt Quick Ultraliteは、タッチ入力とキーボード入力にlibinput ライブラリを使用し、さらに高度なキーマップのサポートにxkbcommon ライブラリを使用します。
高度なキーマップ・サポートを無効にするには、-DQUL_LINUX_ENABLE_XKBCOMMON=off で設定します。タッチ入力とキーボード入力を完全に無効にするには、QUL_LINUX_ENABLE_LIBINPUT=off で設定します。
特定の Qt ライセンスの下で利用可能です。
詳細はこちら。