Qt for QNX のビルド

QNX SDP のセットアップ

Qt 6 をビルドするには、QNX ウェブサイトから QNX SDP 7.1 をダウンロードしてインストールする必要があります。

注: 適切なライセンスが必要です。詳細については、QNX にお問い合わせください

コンパイラおよびツールチェーンの他の部分は、SDP パッケージで提供されます。ターミナルで SDP インストール フォルダから次のように QNX セットアップ スクリプトを実行して、ビルド環境を初期化します:

source qnxsdp-env.sh

または、Windows コマンドシェルで qnxsdp-env.bat を実行します。

ホストビルド

Qt をクロスコンパイルするには、Qt のホストビルドが必要です。これは、ビルド中に特定のツール(mocrccqmlcachegenqsb など)がホストビルドから呼び出されるためです。選択肢は2つあります:

  • ホスト用にQt ソースをビルドするか
  • Qt オンラインインストーラを使用してホストビルドをインストールする。

ただし、QNX 用にコンパイルする場合にも同じツールが必要になるため、ホスト上でデスクトップ用の Qt をビルドできるようにしておくことをお勧めします。

QNX 用ツールチェインファイルの作成

CMake でプロジェクトをクロスコンパイルするには、ツールチェーンファイルが必要です。この CMake 言語ファイルでは、プラットフォーム名、コンパイラ/リンカ、その他多くのツールチェーン固有のものに正しい値を設定します。参考までに、CIで使われるツールチェーンファイルはソースパッケージcoin/provisioning/common/shared/cmake_toolchain_filesから見つけることができます。

set(CMAKE_SYSTEM_NAME QNX)
set(CMAKE_SYSTEM_PROCESSOR armle-v7)
set(arch gcc_ntoarmv7le)

set(CMAKE_C_COMPILER qcc)
set(CMAKE_C_COMPILER_TARGET ${arch})
set(CMAKE_CXX_COMPILER q++)
set(CMAKE_CXX_COMPILER_TARGET ${arch})

set(CMAKE_FIND_ROOT_PATH $ENV{QNX_TARGET};$ENV{QNX_TARGET}/${CMAKE_SYSTEM_PROCESSOR})

set(CMAKE_SYSROOT $ENV{QNX_TARGET})

サンプルはarmv7le のファイルです。ターゲット・アーキテクチャによっては、aarch64lex86_64 もあります。

注意: Cmake は QNX 上で STRIP、AR、RANLIB、NM 変数を正しく渡さないため、使用する場合はツールチェインファイルで個別に指定する必要があります。

QNX 用 Qt の設定とビルド

QNX 用の Qt を設定およびビルドするには、以下が必要です:

  • Qt ソースのビルド」で説明する Qt のビルドツールがホストプラットフォーム用に用意され、 機能している。
  • ツールチェーンファイル$HOME/qnx.cmake
  • Qt ソースコードがチェックアウトされている、または$HOME/qt の下にインストールされている。
  • $HOME/qt-host に Qt のホストビルドがあります。
  • ローカルシステムのインストール場所は$HOME/qnx-install に設定されています。

build ディレクトリを作成して切り替えたら、以下を実行してください:

$HOME/qt/configure -nomake examples -nomake tests \
-qt-host-path $HOME/qt_host \
-extprefix qnx_install \
-prefix /qt \
-- -DCMAKE_TOOLCHAIN_FILE=$HOME/qnx.cmake  \
$HOME/qt

Qt 6以降、configureツールはCMakeのラッパーであり、実際には、このconfigureコマンドは以下のCMakeの直接呼び出しと同等です:

cmake -GNinja -DQT_BUILD_EXAMPLES=OFF -DQT_BUILD_TESTS=OFF \
-DQT_HOST_PATH=$HOME/qt_host \
-DCMAKE_STAGING_PREFIX=$HOME/qnx_install \
-DCMAKE_INSTALL_PREFIX=/qt \
-DCMAKE_TOOLCHAIN_FILE=$HOME/qnx.cmake  \
$HOME/qt

注意: Windows 上でビルドする場合、PCH(Precompiled Headers)を有効にすると QNX コンパイラがクラッシュするため、明示的に無効にする必要があります。PCH を無効にするには、構成オプション-no-pch を使用します。

注: QNX SDP 8.0 を使用している場合は、コンフィギュレーション オプション-skip qtmultimedia -skip qtspeech -skip qtremoteobjects -skip qtinterfaceframework を使用して、サポートされていないモジュールとその依存モジュールをスキップします。

設定がエラーなしで完了したら、以下を実行して Qt をビルドします:

cmake --build . --parallel

注意: QNX コンパイラは、ホスト ビルドに使用したコンパイラよりも多くのメモリを必要とする場合があります。--parallel <numOfProcesses> 注意: QNX コンパイラーは、ホスト ビルドに使用するコンパイラーよりも多くのメモリを必要とする場合があります。

ビルドが完了したら、以下を実行してください:

cmake --install .

これにより、結果が$HOME/qnx_install にインストールされます。ここから、Qt Creator、直接 scp、または他の方法を使用して、Qt ビルドをターゲットデバイスにデプロイできます。-prefix のコンフィギュレーション・パラメータ(例では /qt)は、ターゲット・デバイスのデプロイ場所を定義します。

ターゲットデバイス用のアプリケーションのビルド

Qt のビルドが完了し、ステージングロケーションにインストールされたら、サンプルやアプリケーションをビルドすることができます。

CMakeを使用して、ステージングロケーションのbinディレクトリ(例では$HOME/qnx_install)に生成されたqt-cmake スクリプトを使用して設定し、ninjaを実行します。例えば

$HOME/qnx_install/bin/qt-cmake .
cmake --build .

その後、生成されたアプリケーション・バイナリをデバイスにデプロイできます。qt-cmake ヘルパースクリプトを使用すると、Qt のビルドに使用したツールチェーンファイルが確実にロードされるため、アプリケーションごとに繰り返し指定する必要がなく便利です。

あなたのマシンでビルドされていない Qt インストールを使用している場合、qt-cmake はターゲットプラットフォームの CMake ツールチェーンファイルの場所を知る必要があります。

そのような場合は、QT_CHAINLOAD_TOOLCHAIN_FILE 変数を以下のように設定することで、qt-cmake にカスタムツールチェーンファイルをチェーンロードするように指示します:

$HOME/qnx_install/bin/qt-cmake -DQT_CHAINLOAD_TOOLCHAIN_FILE=$HOME/qnx.cmake .

あなたのマシンでビルドされていない Qt インストールを使用して Qt Creator でアプリケーションをビルドする場合、ローカルのツールチェーンファイルを指すCMAKE_TOOLCHAIN_FILE 変数をキット構成(Edit > Preferences > Kits)に追加する必要があります。

Qt Creator を使用する際の QNX デバイスのキットの接続と追加の詳細については、「QNX デバイスの接続」を参照してください。

サードパーティライブラリ

最小限の QNX Neutrino RTOS イメージには常に含まれているわけではありませんが、システム イメージに以下の追加サードパーティ ライブラリが含まれていることを確認してください:

  • libfontconfig
  • libfreetype
  • libiconv
  • libicui18n
  • libicudata
  • libicuuc
  • libpng16
  • libxml2
  • libsqlite3
  • libssl
  • libcrypto
  • libzstd

注意: これは、QNX Neutrino OS で Qt が使用する共有ライブラリの完全なリストではありません。複数の共有ライブラリは、一般的な OS イメージで既に利用可能であるか、シス テムの他の部分(Screen など)に含まれています。

Qt 設定オプション」と「Qt の設定」も参照してください

Qt for QNX サポート Qt for QNX ランタイムターゲットの要件©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。