このページでは

C

Linux ターゲットでQt Quick Ultralite を使う

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

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

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

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