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 |
開発環境の要件
前提条件
Linux 版「Qt Quick Ultralite」をビルドするには、以下のものが必要です:
- Qt Maintenance Tool から、対象となるターゲット向けのBoot to Qt パッケージ。
- あるいは、指定されたターゲット向けの他のYocto sysrootおよびツールチェーン。
環境設定
CMAKE_TOOLCHAIN_FILE オプションを使用してカスタムツールチェーンファイルを指定し、Linux ターゲット向けのプロジェクトをビルドする際に使用するツールと sysroot を CMake に指示する必要があります。
Boot to Qt パッケージに含まれるqt.toolchain.cmake ツールチェーンファイルの使用
ターゲットボード用のBoot to Qt パッケージが存在する場合、ホストのsysrootにあるqt.toolchain.cmake ツールチェーンファイルを使用できます。その際は、QT_TOOLCHAIN_INCLUDE_FILE を、Qt for MCUs のインストールに含まれる補足的なboot2qt.cmakeツールチェーンファイルに設定します。以下に、MCIMX93-EVKボードの例を示します:
export QUL_ROOT=$HOME/Qt/QtMCUs/2.12.2
export BOOT2QT_DIR=$HOME/Qt/6.8.3/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.2
set BOOT2QT_DIR=C:\Qt\6.8.3\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ターゲットの場合、コンパイラツールの場所、ターゲットのsysroot、および使用するコンパイラフラグをCMakeに指定するためのツールチェーンファイルを手動で作成する必要があります。以下に、特定のターゲットに応じてカスタマイズ可能なツールチェーンファイルの例を示します。
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プラットフォームをビルドするために使用できます:
export QUL_ROOT=$HOME/Qt/QtMCUs/2.12.2
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.2
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の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 ライセンスの下で利用可能です。
詳細はこちら。