VxWorks向けQt
詳細については、The Qt Companyまでお問い合わせください:https://www.qt.io/contact-us/
VxWorks向けQtのライセンス
Qt for VxWorksは、Qt for Device Creation Professional (DCP) ライセンスに基づいて提供されています。詳細については、「Qtの価格」をご覧ください。
サポート対象のアーキテクチャおよび VxWorks リリース
Qt 6.10 は VxWorks 25.03 での動作確認が完了しています。
サポートされているアーキテクチャ:
- ARM-v7—BD-SL-i.MX6でテスト済み。使用したBSP:fsl_imx6
- x86_64—Intel NUC6i3SYHでテスト済み。使用したBSP:itl_generic
今後のQtリリースにご興味をお持ちの場合は、Qtプロフェッショナルサービスまでお問い合わせください。
VxWorksの要件
Qt Widgets アプリケーション
- POSIXのサポート
- C++17のサポート
Qt Quick 2 アプリケーション
Qt Widgets アプリケーションに必要なすべての機能に加え、以下の機能も備えています:
- OpenGL ES 2.0 用の GPU デバイス (GPUDEV)
サポートされるモジュール
最も重要なQtモジュールと、一部のアドオンモジュールがサポートされています。
サポート対象の主要モジュール
| Qtモジュール | 備考 |
|---|---|
| Qt Core | QProcess はサポートされていません。QLocalSocket およびQLocalServer はSOCK_SEQPACKETのみをサポートしています。 |
| Qt GUI | 該当なし |
| Qt Network | 該当なし |
| Qt Qml | 該当なし |
| Qt Quick | 該当なし |
| Qt Quick 制御 | 該当なし |
| Qt Quick ダイアログ | 該当なし |
| Qt Quick レイアウト | 該当なし |
| Qt Quick テスト | 該当なし |
| Qt Test | 該当なし |
| Qt Widgets | 該当なし |
対応アドオン
| Qt アドオン |
|---|
| Qt Concurrent |
| Qt GRPC/Protobuf |
| Qt Graphs |
| Qt Image Formats |
| Qt Multimedia |
| Qtネイティブインターフェース |
| Qt OpenGL |
| Qt Quick 3D |
| Qt Quick コンパイラ |
| Qt Quick Effects |
| Qt SQL |
| Qt SVG |
| Qt Virtual Keyboard |
注: configure ツールを実行する際、-skip <module> オプションを使用することで、サポートされていないモジュールや未使用のモジュールをビルドから明示的に除外することができます 。
プラットフォームに関する注意事項
QtはRTPアプリケーションでの使用に対応していますが、DKMには対応していません。
Qt 5.0のリリースに伴い、Qtには独自のウィンドウシステム実装が含まれなくなりました。QWSはもはやサポート対象のプラットフォームではありません。シングルプロセスのユースケースにおいては、Qt Platform Abstractionの方が優れたソリューションとなります。
VxWorks で使用可能なプラグインは 1 つあります。それは EGLFS です。このプラグインの利用可否は、Qt の設定によって異なります。
特定のデバイス向けの設定
VxWorks SDKをインストールし、インストーラおよびVxWorksイメージのビルドに必要なWindRiverライセンスを取得して、環境を整えてください。{https://gallery.windriver.com/portal/products}で適切なインストーラを検索してください。
特定のデバイス向けに Qt をビルドするには、コンパイルホストへの Qt 6 のインストール、ツールチェーン、および sysroot が必要です。詳細については、「Qt のクロスコンパイル」を参照してください。さらに、一部のデバイスでは、EGL および OpenGL 2.0 をサポートするために、ベンダー固有の適応コードが必要となります。
VxWorks イメージの要件
VxWorks 向けの Qt では、Qt が正しくコンパイルされ動作するために、特定の VxWorks イメージバンドルおよびコンポーネントをベースソフトウェアに組み込む必要があります。このリストは、プロジェクトのハードウェア、ソフトウェア、およびシステム要件によって異なるため、決して完全なものではありません。ただし、以下の表には、特定の機能(タッチスクリーンサポートを含む)が動作するために必須のものが記載されています。 また、これらはVxWorksのバージョンによって変更される可能性がある点にもご注意ください。
fsl_imx6 および itl_generic BSP 向けの VSB 設定例
Qtを正常に動作させるには、VSBに以下の機能を追加する必要があります。詳細については、WindRiver VxWorksドキュメントをご確認ください。
| 機能 | 備考 |
|---|---|
DSI_DSI_KERNEL | 該当なし |
IPNET_COREIP | 該当なし |
IPNET_DHCPC | 該当なし |
SDMMC_DEVICE | 該当なし |
SDMMC_HOST | 該当なし |
SDMMC_SDHC | 該当なし |
SDMMC_STORAGE | 該当なし |
SERVICE_UN | 該当なし |
SOCKET | 該当なし |
USB_EHCI | 該当なし |
USB_KEYBOARD | 該当なし |
USB_MOUSE | 該当なし |
USB_STORAGE | 該当なし |
USB_TOUCHSCREEN | 該当なし |
EVDEV | 該当なし |
EVDEV_LIB | 該当なし |
EVDEV_TI_TSC2004_TS | 該当なし |
EVDEV_EETI_EXC7200_TS | 該当なし |
AUDIO | 該当なし |
GPUDEV_FSLVIVGPU | fsl_imx6固有 |
HASH | 該当なし |
OPENSSL | 該当なし |
RANDOM_ENTROPY_INJECT | 該当なし |
IPNET_SSH | 該当なし |
USER_MANAGEMENT | 該当なし |
ICU | 該当なし |
DRM | itl_generic 特定 |
ITLI915 | itl_generic 特定 |
LIBDRM | itl_generic 特定 |
MESA | itl_generic および nxp_imx8 固有 |
以下の設定変数は暗黙的に追加されるため、これらを削除する必要があります:
| 変数 | 備考 |
|---|---|
_WRS_CONFIG_EVDEV_OPTIMIZED_MODE | 該当なし |
_WRS_CONFIG_EVDEV_DISPLAY_POINT_TRANSLATE | 該当なし |
_WRS_CONFIG_MESA_MANGLE | itl_generic 特定 |
設定に以下の変数を追加する必要があります:
| 変数 | 値 | 備考 |
|---|---|---|
_WRS_CONFIG_RTP_SSP | y | 該当なし |
_WRS_CONFIG_RTP_STACK_PROTECTOR | y | 該当なし |
_WRS_CONFIG_MESA_GPUDEV_INTEL_GEN90 | y | itl_generic固有 |
_WRS_CONFIG_EVDEV_COMPATIBLE_MODE | y | Qtがタッチスクリーンで正常に動作するために必要です。 |
fsl_imx6 および itl_generic BSP 向けの VIP 設定例
詳細については、WindRiver VxWorksのドキュメントをご確認ください。
| バンドル | 注 |
|---|---|
BUNDLE_POSIX | このバンドルは、Qt が要求する POSIX 関連の機能との互換性を確保するために必要です。 |
BUNDLE_RTP_DEPLOY | 該当なし |
BUNDLE_RTP_DEVELOP | 該当なし |
BUNDLE_STANDALONE_SHELL | 該当なし |
| コンポーネント | 備考 |
|---|---|
INCLUDE_TMP_DIR INCLUDE_RAM_DISK_FORMAT_HRFS | QTemporaryFile を使用する場合は、これら 2 つのコンポーネントを含める必要があります。また、TMP_DIR_SIZE を適切な値に設定することも検討してください。 |
DRV_AUDIO_FSL_SSI | 該当なし |
DRV_AUDIO_FSL_SGTL5000 | 該当なし |
DRV_FSL_SDHC_CTRL | 該当なし |
DRV_IMX_SDHC_CTRL | 該当なし |
INCLUDE_EHCI_INIT | 該当なし |
INCLUDE_FSL_IMX6Q_SABRELITE | 該当なし |
DRV_MMCSTORAGE_CARD | 該当なし |
DRV_SDSTORAGE_CARD | 該当なし |
INCLUDE_AUDIO_LIB_CORE | 該当なし |
INCLUDE_AUDIO_LIB_WAV | 該当なし |
INCLUDE_CUSTOM_ENTROPY_ADD | 該当なし |
INCLUDE_DEBUG_AGENT_START | 該当なし |
INCLUDE_DEFAULT_TIMEZONE | 該当なし |
INCLUDE_DISK_UTIL | 該当なし |
INCLUDE_DOSFS | 該当なし |
INCLUDE_DSAPARAM_CMD | 該当なし |
INCLUDE_END | 該当なし |
INCLUDE_EVDEV_LIB_CORE | 該当なし |
INCLUDE_EVDEV_LIB_KBD | 該当なし |
INCLUDE_EVDEV_LIB_KBD_MAP_US | 該当なし |
INCLUDE_EVDEV_LIB_PTR | 該当なし |
INCLUDE_EVDEV_LIB_TS | 該当なし |
INCLUDE_GENDSA_CMD | 該当なし |
INCLUDE_GENRSA_CMD | 該当なし |
INCLUDE_GETADDRINFO | 該当なし |
INCLUDE_GETNAMEINFO | 該当なし |
INCLUDE_HRFS | 該当なし |
INCLUDE_HRFS_ACCESS_TIMESTAMP | 該当なし |
INCLUDE_HRFS_FORMAT | 該当なし |
INCLUDE_HRFS_HISPEED_WRITE_MODE | 該当なし |
INCLUDE_IFCONFIG | 該当なし |
INCLUDE_IO_REALPATH | このコンポーネントは、以下に必要な realpath 関数の使用を有効にするために必要です。QFileInfo |
INCLUDE_IPATTACH | 該当なし |
INCLUDE_IPCOM_SYSLOGD_CMD | 該当なし |
INCLUDE_IPCOM_SYSVAR_CMD | 該当なし |
INCLUDE_IPCOM_USE_RAM_DISK | 該当なし |
INCLUDE_IPCOM_USE_TIME_CMD | 該当なし |
INCLUDE_IPDHCPC | 該当なし |
INCLUDE_IPDNSC | 該当なし |
INCLUDE_IPD_CMD | 該当なし |
INCLUDE_IPFTPC | 該当なし |
INCLUDE_IPFTP_CMD | 該当なし |
INCLUDE_IPIFCONFIG_CMD | 該当なし |
INCLUDE_IPNETSTAT_CMD | 該当なし |
INCLUDE_IPNSLOOKUP_CMD | 該当なし |
INCLUDE_IPPING_CMD | 該当なし |
INCLUDE_IPROUTE_CMD | 該当なし |
INCLUDE_IPTRACE_ROUTE_CMD | 該当なし |
INCLUDE_IPWRAP_GETHOSTBYADDR | 該当なし |
INCLUDE_IPWRAP_GETHOSTBYNAME | 該当なし |
INCLUDE_IPWRAP_GETNAMEINFO | 該当なし |
INCLUDE_IPWRAP_IFNAME | 該当なし |
INCLUDE_IPWRAP_ROUTECMD | 該当なし |
INCLUDE_MMAP | 該当なし |
INCLUDE_PING | 該当なし |
INCLUDE_PIPES | 該当なし |
INCLUDE_POSIX_MAPPED_FILES | 該当なし |
INCLUDE_POSIX_PIPES | 該当なし |
INCLUDE_POSIX_PTHREAD_SCHEDULER | 該当なし |
INCLUDE_POSIX_SHM | 該当なし |
INCLUDE_RAM_DISK | 該当なし |
INCLUDE_RAM_DISK_FORMAT_HRFS | 該当なし |
INCLUDE_RANDOM_NUM_GEN | 該当なし |
INCLUDE_ROMFS | 該当なし |
INCLUDE_ROUTECMD | 該当なし |
INCLUDE_SC_PIPE | 該当なし |
INCLUDE_SC_POSIX_PIPE | 該当なし |
INCLUDE_SD_BUS | 該当なし |
INCLUDE_SECURITY | 該当なし |
INCLUDE_SEC_KEY_STORE_CMD | 該当なし |
INCLUDE_SHELL | 該当なし |
INCLUDE_SSH | 該当なし |
INCLUDE_STANDALONE_SYM_TBL | 該当なし |
INCLUDE_STARTUP_SCRIPT | 該当なし |
INCLUDE_TMP_DIR | 該当なし |
INCLUDE_UN_COMP | 該当なし |
INCLUDE_USB_GEN2_KEYBOARD | 該当なし |
INCLUDE_USB_GEN2_MOUSE | 該当なし |
INCLUDE_USB_GEN2_STORAGE_INIT | 該当なし |
INCLUDE_USB_TOUCH_SCREEN | 該当なし |
INCLUDE_USB_TOUCH_SCREEN_INIT | 該当なし |
INCLUDE_USER_DATABASE | 該当なし |
INCLUDE_USER_IDENTIFICATION | 該当なし |
INCLUDE_VRFS | 該当なし |
INCLUDE_VXBUS_SHOW | 該当なし |
DRV_TOUCH_SCREEN_TI_TSC2004 | 該当なし |
DRV_TOUCH_SCREEN_EETI_EXC7200 | 該当なし |
INCLUDE_FBDEV_FSLIPU_0 | fsl_imx6固有 |
INCLUDE_FBDEV_SPLASH | 該当なし |
INCLUDE_GPUDEV_FSLVIV_API | fsl_imx6 固有 |
INCLUDE_GPUDEV_FSLVIV_API_INIT | fsl_imx6 固有 |
INCLUDE_GPUDEV_ITLGMC_2 | itl_generic 固有 |
INCLUDE_I915 | itl_generic 固有 |
INCLUDE_MESA_FBDEV | itl_generic 固有 |
INCLUDE_MESA_GPUDEV_DRI | itl_generic 専用 |
INCLUDE_MESA_GPUDEV_DRI_I965 | itl_generic 特定 |
以下のコンポーネントは暗黙的に追加されるため、削除する必要があります:
| レイヤー | 備考 |
|---|---|
INCLUDE_FTP | 該当なし |
INCLUDE_SHELL_SECURITY | 該当なし |
VIPパラメータ
VxWorks上でQtを正常に動作させるには、以下のパラメータを追加する必要があります:
| パラメータ | 値の例 | 備考 |
|---|---|---|
SEC_VAULT_KEY_ENCRYPTING_PW | '"vxTarget"' | 該当なし |
UDB_STORAGE_PATH | '"/ram/vxUserDB.txt"' | 該当なし |
UDB_HASH_KEY | '"123456789"' | 該当なし |
UDB_HASH_KEY_LEN | 9 | 値の例、前述を参照 |
FSLVIV_RTP_COMMAND_BUFFER_QUEUE | 32 | 「arm」アーキテクチャの場合 |
SYS_CLK_RATE | 100 | 該当なし |
RTP_PTHREAD_STACK_SIZE_DEFAULT | 262144 | qtquick3d のサンプルを動作させるために必要です。PTHREAD_STACK_SIZE_DEFAULT 環境変数で上書き可能です。 |
TMP_DIR_SIZE | 614400 | Qt Testに合格するための最小値 |
NUM_FILES | 300 | 該当なし |
RTP_FD_NUM_MAX | 300 | 該当なし |
HRFS_DEFAULT_MAX_FILES | 300 | 該当なし |
ITLGMC_FBDEV_RESOLUTION_2 | '"1024x768-32"' | HDMI経由で接続されたXenarc 706TSAタッチスクリーンの値の例。 |
RTP_MEM_FILL | True | デフォルトの値はTrue ですが、Qtが正常に動作するためには、この値をTrue のままにしておく必要があります。 |
VxWorks 向け Qt 6 のビルド
ホストビルド
Qtをクロスコンパイルするには、ホストビルドのQtが利用可能である必要があります。これは、ビルド中に、特定のツール(moc 、rcc 、qmlcachegen 、qsb など)がホストビルドから呼び出されるためです。以下のオプションがあります:
- ホスト用のQt ソースをビルドする、
- Qt Online Installer を使用してホストビルドをインストールする。
ただし、VxWorks 向けにコンパイルする際にも同じツールが必要となるため、ホスト上でデスクトップターゲット向けの Qt をビルドできることを確認しておくことをお勧めします。
Configureスクリプトの実行
ホスト向けの Qt 6 を設定、ビルド、およびインストールするためのコマンドは次のとおりです:
./configure \
-cmake-generator "Ninja" \
-extprefix <path/to/Qt6/host/installation/dir> \
-submodules qtbase,qtdeclarative,qtquick3d,qtshadertools \
-nomake tests \
-nomake examples \
-- \
-B <host/build/directory>
cd <host/build/directory>
cmake --build . --parallel
cmake --install .これらのコマンドを実行すると、<path_to_Qt 6_host_installation_dir> にホスト用のQt 6がインストールされます。
ターゲット向けのQt 6のビルド
ビルド環境のセットアップ
configure を実行して Qt 6 をビルドする前に、コマンドプロンプトでVxWorks Development Shell を起動する必要があります。
- Linux:
cd <VxWorks installation directory> ./wrenv.sh -p vxworks export WIND_CC_SYSROOT=<path to VxWorks VSB directory> - Windows:
cd <VxWorks installation directory> wrenv -p vxworks export WIND_CC_SYSROOT=<path to VxWorks VSB directory>
カスタム CMake ツールチェーンファイルの準備
BSP のグラフィックスライブラリを組み込むには、まず CMake ツールチェーンファイルを作成する必要があります。BD-SL-i.MX6 デバイス用の CMake ツールチェーンファイルの例:
# Copyright (C) 2024 The Qt Company Ltd.
if(QT_VXWORKS_TOOLCHAIN_FILE)
set(_original_toolchain_file "${QT_VXWORKS_TOOLCHAIN_FILE}")
elseif(DEFINED ENV{QT_VXWORKS_TOOLCHAIN_FILE})
set(_original_toolchain_file "$ENV{QT_VXWORKS_TOOLCHAIN_FILE}")
else()
message(FATAL_ERROR "QT_VXWORKS_TOOLCHAIN_FILE is not set.")
endif()
if(NOT EXISTS "${_original_toolchain_file}")
message(FATAL_ERORR "${_original_toolchain_file} doesn't exists.")
endif()
include("${_original_toolchain_file}")
unset(_original_toolchain_file)
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES QT_VXWORKS_TOOLCHAIN_FILE)
set(_common_lib_path "${CMAKE_SYSROOT}/usr/lib/common")
set(EGL_INCLUDE_DIR ${CMAKE_SYSROOT}/usr/h/public CACHE PATH "Path to EGL include directory" FORCE)
set(EGL_LIBRARY ${_common_lib_path}/libgfxFslVivEGL.so CACHE PATH "Path to EGL lib" FORCE)
set(GLESv2_INCLUDE_DIR ${CMAKE_SYSROOT}/usr/h/public CACHE PATH "Path to GLES include directory" FORCE)
set(GLESv2_LIBRARY ${_common_lib_path}/libgfxFslVivGLESv2.so CACHE PATH "Path to GLES lib" FORCE)
set(VxWorksPlatformGraphics_DEFINES "-D_FSLVIV")
set(VxWorksPlatformGraphics_LIBRARIES_PACK
"${_common_lib_path}/libgfxFslVivEGL.so"
"${_common_lib_path}/libgfxFslVivGLESv2.so"
"${_common_lib_path}/libgfxFslVivGAL.so"
"${_common_lib_path}/libgfxFslVivGLSLC.so"
"${_common_lib_path}/libgfxFslVivVDK.so"
"${_common_lib_path}/libxml.so"
)
set(VxWorksPlatformGraphics_REQUIRED_LIBRARIES
${VxWorksPlatformGraphics_LIBRARIES_PACK}
${EGL_LIBRARY}
${GLESv2_LIBRARY}
)
unset(_common_lib_path)Intel NUC6i3SYH の例:
# Copyright (C) 2024 The Qt Company Ltd.
if(QT_VXWORKS_TOOLCHAIN_FILE)
set(_original_toolchain_file "${QT_VXWORKS_TOOLCHAIN_FILE}")
elseif(DEFINED ENV{QT_VXWORKS_TOOLCHAIN_FILE})
set(_original_toolchain_file "$ENV{QT_VXWORKS_TOOLCHAIN_FILE}")
else()
message(FATAL_ERROR "QT_VXWORKS_TOOLCHAIN_FILE is not set.")
endif()
if(NOT EXISTS "${_original_toolchain_file}")
message(FATAL_ERORR "${_original_toolchain_file} doesn't exists.")
endif()
include("${_original_toolchain_file}")
unset(_original_toolchain_file)
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES QT_VXWORKS_TOOLCHAIN_FILE)
set(_common_lib_path "${CMAKE_SYSROOT}/usr/lib/common")
set(EGL_INCLUDE_DIR ${CMAKE_SYSROOT}/usr/h/public CACHE PATH "Path to EGL include directory" FORCE)
set(EGL_LIBRARY ${_common_lib_path}/libgfxMesaEGL.so CACHE PATH "Path to EGL lib" FORCE)
set(GLESv2_INCLUDE_DIR ${CMAKE_SYSROOT}/usr/h/public CACHE PATH "Path to GLES include directory" FORCE)
set(GLESv2_LIBRARY ${_common_lib_path}/libgfxMesaGL.so CACHE PATH "Path to GLES lib" FORCE)
set(VxWorksPlatformGraphics_DEFINES "-D__vxworks -D__VXWORKS")
set(VxWorksPlatformGraphics_LIBRARIES_PACK
"${_common_lib_path}/libgfxMesaEGL.so"
"${_common_lib_path}/libgfxMesaGL.so"
"${_common_lib_path}/libgfxMesaSw.so"
"${_common_lib_path}/libgfxMesa.so"
"${_common_lib_path}/libgfxMesaDriI965.so"
"${_common_lib_path}/libgfxLibDRM.so"
"${_common_lib_path}/libxml.so"
)
set(VxWorksPlatformGraphics_REQUIRED_LIBRARIES
${VxWorksPlatformGraphics_LIBRARIES_PACK}
${EGL_LIBRARY}
${GLESv2_LIBRARY}
)
unset(_common_lib_path)ターゲット向けの Qt 6 `configure` の実行
以下は、BD-SL-i.MX6 向けのビルド設定例です。ほとんどの VxWorks ボードにおいて、configure コマンドの記述はこれと非常に似ています。デフォルトでは、Qt 6 は共有ライブラリを使用するように設定されています。Qt 6 を静的リンクでビルドするには、configure に `-static ` オプションを追加してください。
環境変数 {WIND_CC_SYSROOT} が VxWorks VSB のルートディレクトリに設定されていることを確認してください。
./configure \
-cmake-generator "Ninja" \
-icu \
-eglfs \
-qpa eglfs \
-submodules "qtbase,qtdeclarative,qtmultimedia,qtquick3d,qtgraphs,qtimageformats,qtsvg,qtshadertools,qtvirtualkeyboard" \
-- \
-B <target/build/directory> \
-DQT_VXWORKS_TOOLCHAIN_FILE=<path/to/VSB/mk/toolchain.cmake> \
-DFEATURE_vulkan=OFF \
-DQT_QMAKE_TARGET_MKSPEC=vxworks-clang \
-DQT_HOST_PATH=<path/to/Qt6/host/installation/dir> \
-DCMAKE_STAGING_PREFIX:PATH=<path/to/Qt6/target/installation/dir> \
-DCMAKE_TOOLCHAIN_FILE=<path/to/cmake/for/graphics/file/created/above> \Qt 6のビルドには、シャドウビルドの使用を推奨します。詳細については、「Qtのconfigureオプション」を参照してください。
警告: VxWorks が `RTP_MEM_FILL ` を false として設定されている場合 、Qt の `configure` には追加の `-DCMAKE_CXX_FLAGS="-DQT_RTP_MEM_FILL=1" ` 引数が必要です。
設定後、以下のコマンドを使用して VxWorks 用の Qt 6 をビルドおよびインストールします。
cd <host build directory>
cmake --build . --parallel
cmake --install .VxWorks デバイス用のプラットフォームプラグイン
VxWorks 向け Qt は、ネイティブウィンドウ置換のための EGLFS プラットフォームプラグインをサポートしています。その設定の詳細については、EGLFS を参照してください。
Qtアプリケーションのビルド
Qt アプリケーションをビルドするには、環境変数または定義として QT_VXWORKS_TOOLCHAIN_FILE を設定する必要があります。
Qtのデモ「clocks」をビルドする例:
export WIND_CC_SYSROOT=<path/to/VxWorks/VSB/directory>
export QT_VXWORKS_TOOLCHAIN_FILE=<path/to/the/BSP/toolchain.cmake>
<path/to/Qt6/target/installation/dir>/bin/qt-cmake -G Ninja -S ~/Qt/Examples/Qt-6.10.0/demos/clocks -B <path/to/build/directory>
cd <path/to/build/directory>
cmake --build . --parallel環境変数の設定
| 変数 | 説明 |
|---|---|
| QT_QPA_FONTDIR | フォントのパス。 |
| QT_QPA_EGLFS_FB | フレームバッファデバイスへのパス。 |
| LD_LIBRARY_PATH | ダイナミックライブラリへのパス。 |
| ICU_DATA | ICU データへのパス。 |
| QT_QPA_EGLFS_INTEGRATION | Eglfs 統合、eglfs_viv またはeglfs_kms 。 |
| QT_QPA_EGLFS_KMS_CONFIG | kms.conf へのパス。 |
注:QML ディスクキャッシュは機能しません。起動が遅くなるのを防ぐため、次の変数を使用して無効にしてください:QML_DISABLE_DISK_CACHE 。
例えば、起動スクリプト内で次のように環境変数を設定します:
putgenv("QT_QPA_FONTDIR=/bd0a/fonts")
putgenv("QT_QPA_EGLFS_FB=/dev/fb0")
putgenv("LD_LIBRARY_PATH=/bd0a/lib/gfx;/bd0a/lib/llvm;/bd0a/lib/icu")
putgenv("ICU_DATA=/bd0a/icu/icudt73l.dat")
putgenv("QT_QPA_EGLFS_INTEGRATION=eglfs_kms")
putgenv("QT_QPA_EGLFS_FB=/dev/fb0")
putgenv("QT_QPA_EGLFS_KMS_CONFIG=/bd0a/kms.conf")
putgenv("QML_DISABLE_DISK_CACHE=1")たとえば、Intel KabyLake デバイス用の `kms.conf ` ファイルは、次のような内容になります:
{
"device": "/dev/dri/card0",
"hwcursor": false,
"pbuffers": true,
"outputs": [
{
"name": "DP",
"mode": "1920x1080"
}
]
}Qtアプリケーションの実行
以下の例は、VxWorksのrtpSp コマンドを使用してアプリケーションを起動する方法を示しています:
rtpSp("<Qt 6 VxWorks application>", 200, 0x100000, 0, 0x01000000)Qtアプリケーションのデバッグ
Qtアプリケーションをデバッグするには、VxWorks VSBに以下を追加する必要があります:
vxprj vsb config -s -add "_WRS_CONFIG_TCF_GDB_RSP=y"VxWorks VIPの設定に以下を追加します:
"INCLUDE_DEBUG_AGENT"
"INCLUDE_DEBUG_AGENT_START"
"INCLUDE_STANDALONE_SYM_TBL"コマンドラインから
- SSH または USB シリアル接続を介して、デバイス上でデバッグ対象のアプリケーションを起動します:
rtpSp("<Qt 6 VxWorks application>", 200, 0x100000, 0, 0x01000000) - PC上でVxWorksデバッガを起動します:
vxgdb <binary to debug> - デバッガで実行中のプロセスを一覧表示します:
monitor ps - すでに実行中のアプリケーションにデバッガをアタッチする:
"attach <id from monitor>" - デバッグにはGDBコマンドを使用します。
出典:Qt Creator
Qt Creator からのデバッグについては、Qt Creator を参照してください:VxWorksデバイス上のC++アプリケーションのデバッグ。
Workbench から
- CMake リアルタイムプロセスプロジェクトを作成します。

- デバッグが設定されている VSB を設定します。
- CMakeLists.txt から set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") を削除します。
- 「CMake のはじめ方」に従って、Qt CMake 関連のコードを CMakeLists.txt に追加します。
project()の前に、unset(CMAKE_TOOLCHAIN_FILE CACHE)を追加し、Qt6 ツールチェーンファイルを指す `CMAKE_TOOLCHAIN_FILE` と、VSB ツールチェーンファイルを指す `QT_CHAINLOAD_TOOLCHAIN_FILE` を追加します。例:unset(CMAKE_TOOLCHAIN_FILE CACHE) set(CMAKE_TOOLCHAIN_FILE "/home/qtuser/VxWorks/qt/target_gdb/lib/cmake/Qt6/qt.toolchain.cmake") set(QT_CHAINLOAD_TOOLCHAIN_FILE "/home/qtuser/VxWorks/fsl_imx6_2_0_6_2_VSB_gdb/mk/toolchain.cmake")- アプリケーション「Project」をビルドします。
- 新しい接続を作成します。

- デバッグのためにRTPプロセスを開始します。

- [詳細オプション] をクリックします。

- スタックサイズを 0x100000 に設定します。

VxWorks 向け Qt 入力プラグイン
VxWorks は、libevdev の独自実装を使用しています。この実装の API は Linux のものと非常に似ていますが、機能には違いがあります。 このため、Qt では、VxWorks 向けに、マウス、キーボード、タッチスクリーンを処理するための個別の入力プラグインを実装しています。これらは {inputs-linux-device.html}{Linux evdev} に基づいていますが、以下で説明する違いがあります。
VxMouse
VxMouse は、環境変数 `QT_QPA_VXEVDEV_MOUSE_PARAMETERS` が異なる点を除き、EvdevMouse と同じ設定方式を使用します。さらに、VxMouse は、`nocompress`、`dejitter `、および `grab ` パラメータを無視します。
VxKeyboard
VxKeyboard は、環境変数 `QT_QPA_VXEVDEV_KEYBOARD_PARAMETERS` が異なる点を除き、EvdevKeyboard と同じ設定方式を使用します。
VxTouch
VxTouch は、EvdevTouch と同じ設定方式を使用しますが、環境変数が異なります:xml-ph-0000@deepl.internal。
QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERSQT_QPA_VXEVDEV_DEBUG
さらに、VxTouch には以下の 2 つの新しいパラメータが追加されています:
| パラメータ | 説明 |
|---|---|
rangex=MIN_X,MAX_X | X軸のタッチポイントの最小値と最大値を上書きします |
rangey=MIN_Y,MAX_Y | Y軸のタッチポイントの最小値と最大値を上書きします |
制限事項
ビデオメモリ
専用ビデオメモリの容量が固定されているシステムでは、Qt Quick やQOpenGLWidget などのクラスに基づく Qt アプリケーションを実行する前に、特別な注意が必要です。特に高解像度(例:フル HD)の画面で表示する場合、デフォルト設定では不十分な場合があります。 その場合、予期せぬ不具合が発生する可能性があります。したがって、少なくとも 128 MB の GPU メモリが利用可能であることを確認することを推奨します。GPU 用に固定量のメモリが確保されていないシステムでは、この問題は発生しません。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.