このページでは

C

LinuxターゲットでのQt Quick Ultraliteの使用

このガイドでは、Linuxターゲット上でQt Quick Ultraliteを使用した開発を開始するために必要な事項について説明します。

サポートされているアーキテクチャ、プラットフォーム、および Linux ツールチェーン

Qt Quick Ultraliteは以下のハードウェアをサポートしています:

ハードウェアボードMPUコンパイラ
MCIMX93-EVKi.MX 93 MPUGNU 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プラットフォーム向け移植版には、drmlinuxfb の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 ライセンスの下で利用可能です。
詳細はこちら。