Kanzi アプリケーションを QNX にデプロイする¶
ターゲットプラットフォーム用の Kanzi アプリケーションをビルドする前に、ターゲットプラットフォーム用の Kanzi ビルド環境をセットアップして構成してください。ビルド環境には、Kanzi ビルドシステムがターゲットプラットフォーム用のアプリケーションをビルドするために使用するツールが含まれています。
要件¶
Kanzi アプリケーションを QNX にビルドしてデプロイするには、次のものが必要です。
QNX ソフトウェア開発プラットフォーム 7.1。
QNXソフトウェア開発プラットフォームからのライブラリ要件:
slog2
QNX開発ツールは、https://blackberry.qnx.com で入手できます。
CMake ベースのプラットフォームパッケージの場合: CMake 3.25 および Ninja 1.10.x
Kanzi アプリケーションを QNX ターゲットデバイスにデプロイする前に、そのデバイスで QNX Screen サービスが実行されていることを確認してください。https://www.qnx.com/developers/docs/7.1/#com.qnx.doc.screen/topic/manual/cscreen_about.html を参照してください。
サポートされているビルドシステム、STDLIB実装、およびライブラリリンク¶
Kanzi プラットフォームパッケージは、これらのビルドシステムをサポートしています。
CMake。このプラットフォームパッケージの名前には
-cmakeが含まれます。プラットフォームパッケージには、その作成に使用された CMake オプションが記載された
Engine/cmake/toolchains/<toolchain_file>.cmakeファイルが含まれています。
Kanzi は、これらのSTDLIB実装に基づいたQNXプラットフォームパッケージを提供します。
LLVM。プラットフォームパッケージアーカイブの名前に
cxxが明示的に含まれます。GNU。プラットフォームパッケージアーカイブの名前に
gppが明示的に含まれます。
Kanzi プラットフォームパッケージは、これらのライブラリリンクオプションをサポートしています。
スタティック。
静的にリンクされたライブラリを使用してアプリケーションをビルドするには、CMake 定義
-DBUILD_SHARED_LIBS:BOOL=OFFを使用します。BUILD_SHARED_LIBSオプションを指定しない場合は、これがデフォルトです。ダイナミック。
動的にリンクされたライブラリを使用してアプリケーションをビルドするには、CMake 定義
-DBUILD_SHARED_LIBS:BOOL=ONを使用します。
QNXでLLVM C++ライブラリを使用する場合、Kanzi アプリケーションでプラグイン依存関係を持つkzbファイルを使用する際は、ランタイムリンカーを使用しないでください。アプリケーションの実行ファイルをビルドする際に、プラグインSOをアプリケーションにリンクしてください。詳細は、https://www.qnx.com/developers/docs/7.1/#com.qnx.doc.neutrino.sys_arch/topic/dll.html および https://www.qnx.com/developers/docs/7.1/#com.qnx.doc.neutrino.utilities/topic/q/qcc.html を参照してください。
QNX用の Kanzi アプリケーションの構築¶
CMake を使用した Kanzi アプリケーションのビルド¶
例えば、CMakeを使用してQNX 7.1用のLinux上でkzb_playerアプリケーションをビルドするには、次のようにします。
LLVM STDLIB実装を使用し、-cxxプラットフォームパッケージから、共有ライブラリリンクを使用して:
cd Engine/applications/kzb_player mkdir build cd build cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../cmake/toolchains/qnx710-aarch64-cxx-qnx_screen.cmake -DCMAKE_INSTALL_PREFIX=../bin -DKANZI_BUILD_SHARED_LIBS:BOOL=ON -DKanzi_DIR=../../lib/cmake/Kanzi -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON .. cmake --build . cmake --install .
GNU STDLIBの実装を使用して、Non-cxxプラットフォームパッケージから:
cd Engine/applications/kzb_player mkdir build cd build cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../cmake/toolchains/qnx710-aarch64-gpp-qnx_screen.cmake -DCMAKE_INSTALL_PREFIX=../bin -DKanzi_DIR=../../lib/cmake/Kanzi -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON .. cmake --build . cmake --install .
Kanzi アプリケーションを QNX デバイスにデプロイする¶
Kanzi アプリケーションを QNX にデプロイするには:
Kanzi アプリケーションを QNX 用にビルドします。QNX用の Kanzi アプリケーションの構築 を参照してください。
QNXデバイスをコンピュータに接続します。
<ProjectName>/Application/binディレクトリから、以下を QNX ターゲットデバイスにコピーします。Kanzi アプリケーション exe ファイル
Kanzi アプリケーションが使用する kzb ファイル
Kanzi アプリケーションが使用するすべての kzb ファイルのリストを含む
application.cfgファイル
QNXターゲットデバイスでコマンドラインを開き、そのデバイス上の Kanzi アプリケーションに実行権限を追加します。
// Adds execution rights on the QNX target device // for the Kanzi application called MyApplication. chmod 755 MyApplication
コマンドラインで、QNXターゲットデバイス上でアプリケーションを起動します。
// Starts the Kanzi application called MyApplication. ./MyApplication
画面表示情報の印刷¶
Kanzi アプリケーションのために、QNX Screen ディスプレイ情報を一覧表示できます。
画面表示情報を印刷するには:
Deploy your Kanzi application to QNX. See Kanzi アプリケーションを QNX デバイスにデプロイする.
-enum-qnx-displaysコマンドライン引数を使用してアプリケーションを実行します。./MyApplication -enum-qnx-displays
アプリケーションは各ディスプレイに対してこの情報を出力し、終了します。
Display ID
ディスプレイがアタッチされているかどうか
ディスプレイが取り外し可能かどうか
ディスプレイがフォーカスされているかどうか
ディスプレイの現在の解像度
(オプション) アプリケーションをルートとして実行する場合:
利用可能なすべてのビデオモード
現在のビデオモード
QNXスクリーン使用フラグの設定¶
QNX Screen プロパティの使用フラグはプログラムで設定できます。Screen 使用フラグは、割り当てられた QNX ウィンドウバッファを制約するために使用できるプロパティです。QnxUsageFlags を参照してください。
QNXでの既知の問題¶
複数の Kanzi アプリケーションを実行し、次のようなエラーが発生した場合
error:generic:/home/admin/ws/0/ui/Engine/source/core.ui/platform/windowing/qnx_screen/kzs_window_native.cpp:179> Unable to retrieve window size Process 1482838 (ClusterApp) terminated SIGSEGV code=1 fltno=11 ip=000000121378c348(/var/data/j01/bin/kanzi/./ClusterApp@_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED0Ev+0x0000000000007d78) mapaddr=00000000004d4348. ref=0000000000000010
各 Kanzi アプリケーションで、
NativeWindowProperties::groupNameを一意の名前に設定する必要があります。GroupName を参照してください。QNXはCXXコンパイラとしてのQCCの使用を非推奨としました。QNXアプリケーションのコンパイルは、次のエラーで失敗します。
QCC is not a full path and was not found in the PATH.
3.9.4 より前のバージョンの Kanzi 向けに QNX アプリケーションをコンパイルする場合は、ビルド構成ファイル内の非推奨の QCC コンパイラーコマンドを q++ コマンドに置き換えます。
CMake の場合は、
Engine/cmake/toolchains/qnx7*.cmakeを編集して、以下を置き換えます。set(CMAKE_CXX_COMPILER QCC)
以下に置き換えます。
set(CMAKE_CXX_COMPILER q++)
SCons の場合は、以下を編集します。
Engine/configs/platforms/qnx/config.pyで、以下を置き換えます。default.env["CC"] = os.path.join(toolchain_bin, "QCC") default.env["CXX"] = os.path.join(toolchain_bin, "QCC")
以下に置き換えます。
default.env["CC"] = os.path.join(toolchain_bin, "q++") default.env["CXX"] = os.path.join(toolchain_bin, "q++")
Engine/scripts/build.pyで、以下を置き換えます。re.compile(r'^([^/]*/)*QCC$'),
以下に置き換えます。
re.compile(r'^([^/]*/)*q\+\+$'),