Windows 10でQualcomm Snapdragon 8155Pボード用のQtをビルドする
先に進む前に、Green Hills INTEGRITYとQualcommの開発環境をセットアップする必要があります。プラットフォーム依存のインストールを参照してください。
Windows 10 用バッチスクリプトの作成
Qt for INTEGRITY の開発環境をセットアップするには、Qualcomm Snapdragon 8155P ボードのソースから Qt をビルドします。Qt for INTEGRITY をビルドする前に、ビルド環境を設定します。各ビルドの前に行う必要があるため、自動化するためのバッチスクリプトを以下に示します。
Windows 10 の場合は、新しいバッチスクリプトsetEnvironment.bat を作成し、ホームフォルダに保存します。スクリプトに以下のエクスポート変数を追加する:
@echo off set PATH=%PATH%;C:\ghs\comp_202014 set INTEGRITY_DIR=C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\integrity set INTEGRITY_BSP=platform-sa8155 set INTEGRITY_BUILD_TARGET=chk set QC_MULTIMEDIA_INC_DIR=C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\qc_bsp\include\amss\multimedia set GL_INC_DIR=C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\qc_bsp\AMSS\multimedia\graphics\include\public set GL_LIB_DIR=C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\qc_bsp\out\rel\libs\base;C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\qc_bsp\out\rel\libs\multimedia\display;C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\qc_bsp\out\rel\libs\multimedia\graphics;C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\qc_bsp\out\rel\libs\platform\;C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot\apps\ghs_apps_proc\qc_bsp\AMSS\multimedia\graphics\opengl\esx\build\integrity\prebuilt\ set TARGET_ROOT_PATH="C:\Users\user\ghs_pack\es7_dev_env\hlos_dev_boot"
これらのエクスポート・パスでは、MULTI IDEとINTEGRITYのインストール時にC:\ghs\comp_202014 and C:\Users\user\ghs_pack\*
のインストール・ディレクトリを使用したと仮定しています(プラットフォーム依存関係のインストールを参照)。デフォルトのディレクトリを使用していない場合は、エクスポート・パスを適宜調整してください。
ビルド環境を初期化するには、WindowsのCMDターミナルで次のコマンドを実行します:
setEnvironment.bat
注: Qt をビルドするたびに、またはqmake
やCMake
のビルドシステムを使用するたびに、Windows の CMD ターミナルでこのコマンドを実行してください。
Qt ソースの取得
Qt のソースコードはQt アカウントからダウンロードできます。
また、Git リポジトリから Qt のソースを入手することもできます。
注意: Qtソースのバージョンは6.2以降でなければなりません。
Note: Qt for INTEGRITY でサポートされている Qt モジュールはSupported Qt Modules に記載されています。
クロスコンパイルツールを使用するための Qt Desktop のビルド
Qt のクロスコンパイルには、Qt のホストビルドが必要です。ビルド中、moc, rcc, qmlcachegen, qsbなどのツールがそこから呼び出されます。より詳細な情報は、Qtのクロスコンパイルを参照してください。
Windows 10ホストビルドの場合は、以下のコマンドを実行してください:
mkdir hostbuild cd hostbuild/ C:/Users/user/qt5/configure -nomake tests -nomake examples -release -prefix C:/Users/user/hostbuild cmake --build . --parallel 6 cmake --install .
INTEGRITY 用ツールチェーンファイルの作成
CMakeでプロジェクトをクロスコンパイルするには、ツールチェーン・ファイルを指定する必要があります。この CMake 言語ファイルは、プラットフォーム名、使用するコンパイラ/リンカ、およびその他のツールチェーン固有の事柄に適切な値を設定します。Windows10でIntegrityをビルドする場合は、以下の内容のtoolchain.cmakeファイルを作成する:
# Copyright (C) 2022 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #generic set(CMAKE_SYSTEM_NAME Integrity) set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_CROSSCOMPILING True) #path to installed GHS compiler for WIN10 set(TARGET_ROOT_PATH "C:/Users/user/ghs_pack/es7_dev_env/hlos_dev_boot") set(CMAKE_BUILD_TYPE "Release") set(GHS_COMPILER C:/ghs/comp_202014/cxintarm64.exe) set(CMAKE_C_COMPILER ${GHS_COMPILER}) set(CMAKE_CXX_COMPILER ${GHS_COMPILER}) set(CMAKE_ASM_COMPILER ${GHS_COMPILER}) set(EGL_FOUND True) set(UNIX True) set (CMAKE_C_COMPILE_FEATURES c_std_99) set (CMAKE_CXX_COMPILE_FEATURES cxx_alias_templates cxx_alignas cxx_alignof cxx_attributes cxx_auto_type cxx_constexp cxx_decltype cxx_delegating_constructors cxx_explicit_conversions cxx_extern_templates cxx_inheriting_constructors cxx_lambdas cxx_noexcept cxx_nonstatic_member_init cxx_nullptr cxx_override cxx_range_for cxx_raw_string_literals cxx_reference_qualified_functions cxx_rvalue_references cxx_static_assert cxx_std_17 cxx_thread_local cxx_unicode_literals cxx_uniform_initialization cxx_unrestricted_unions cxx_variadic_macros cxx_variadic_templates) if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) endif() if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_LIBRARY) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) endif() if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_PACKAGE) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) endif() if (NOT DEFINED CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) endif() set(CMAKE_FIND_ROOT_PATH ${TARGET_ROOT_PATH}) #base set(CMAKE_C_FLAGS "-bsp $ENV{INTEGRITY_BSP} -os_dir $ENV{INTEGRITY_DIR} -non_shared -startfile_dir=$ENV{INTEGRITY_DIR}/libs/$ENV{INTEGRITY_BSP}/$ENV{INTEGRITY_BUILD_TARGET} --rtos_library_directory=libs/$ENV{INTEGRITY_BSP}/$ENV{INTEGRITY_BUILD_TARGET} --rtos_library_directory=libs/arm64/$ENV{INTEGRITY_BUILD_TARGET} -bigswitch -DINTEGRITY -llibposix.a") set(CMAKE_C_FLAGS_DEBUG "-g -Omaxdebug") set(CMAKE_C_FLAGS_RELEASE "-Ospeed -Olink -Omax -no_uvfd") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --signed_fields --diag_suppress=1,82,228,236,381,611,961,997,1795,1931,1974,3148 --c++17 --thread_local_storage --exceptions --defer_parse_function_templates") set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -frigor=accurate --signed_fields --no_implicit_include --link_once_templates -non_shared --new_outside_of_constructor --commons -I $ENV{QC_MULTIMEDIA_INC_DIR}") set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") set(CMAKE_FIND_LIBRARY_PREFIXES "lib") set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") set(BUILD_SHARED_LIBS OFF) set(QT_CFLAGS_OPTIMIZE_FULL "-Ospeed -Olink -Omax -no_uvfd") set(EGL_INCLUDE_DIR $ENV{GL_INC_DIR}) set(PKG_EGL_LIBRARY_DIRS ${TARGET_ROOT_PATH}) set(GLESv2_INCLUDE_DIR $ENV{GL_INC_DIR}) set(OPENGL_INCLUDE_DIR $ENV{GL_INC_DIR}) set(EGL_LIBRARY "${EGL_LIBRARY_GRAPHIC_PATH}/libESXEGL_Adreno.a") set(GLESv2_INCLUDE_DIR $ENV{GL_INC_DIR}) set(GLESv2_LIBRARY "${EGL_LIBRARY_GRAPHIC_PATH}/libESXGLESv2_Adreno.a") set(IntegrityPlatformGraphics_INCLUDE_DIR ${GL_INC_DIR}) set(IntegrityPlatformGraphics_LIBRARY "${EGL_LIBRARY_GRAPHIC_PATH}/libadreno_utils.a") set(IntegrityPlatformGraphics_LIBRARIES_PACK "${EGL_LIBRARY_BASE_PATH}/libplanedef.a" "${EGL_LIBRARY_BASE_PATH}/libmmosalfile.a" "${EGL_LIBRARY_BASE_PATH}/libOSAbstraction.a" "${EGL_LIBRARY_OPENWFD_PATH}/libopenwfd.a" "${EGL_LIBRARY_GRAPHIC_PATH}/libOSUser.a" "${EGL_LIBRARY_GRAPHIC_PATH}/libpanel.a" "${EGL_LIBRARY_GRAPHIC_PATH}/libGSLUser.a" "${EGL_LIBRARY_PREBUILD_PATH}/libglnext-llvm.a" "${EGL_LIBRARY_PLATFORM_PATH}/libpmem.a" "${EGL_LIBRARY_CHK_PATH}/libposix.a" "${EGL_LIBRARY_CHK_PATH}/libivfs.a" ) list(APPEND _qt_igy_gui_libs "${GLESv2_LIBRARY}" "${IntegrityPlatformGraphics_LIBRARY}" "${IntegrityPlatformGraphics_LIBRARIES_PACK}") set(OPENGL_opengl_LIBRARY ${EGL_LIBRARY}) # Command is required to fix CMake WIN bug https://gitlab.kitware.com/cmake/cmake/-/issues/22933 set(CMAKE_CXX_COMPILER_PREDEFINES_COMMAND ${CMAKE_CXX_COMPILER}) list(APPEND CMAKE_CXX_COMPILER_PREDEFINES_COMMAND -bsp $ENV{INTEGRITY_BSP} -os_dir $ENV{INTEGRITY_DIR} -E -dM "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") # Set format for creating static library set(CMAKE_CXX_CREATE_STATIC_LIBRARY "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} <LINK_FLAGS> -archive -o <TARGET> <OBJECTS> -keep_objs") set(CMAKE_C_CREATE_STATIC_LIBRARY "${CMAKE_CXX_COMPILER} ${CMAKE_C_FLAGS} <LINK_FLAGS> -archive -o <TARGET> <OBJECTS> -keep_objs") # Set format to create executables set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>") set(CMAKE_C_LINK_EXECUTABLE "${CMAKE_CXX_COMPILER} ${CMAKE_C_FLAGS} <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
INTEGRITY 用に Qt を設定する
以下のコマンドを使用して、Qualcomm Snapdragon 8155P ボード用に Qt を設定します。Windows 10 HOST
は configure 行に従う必要があります:
mkdir targetbuild cd targetbuild/ cmake C:/Users/user/qt5/ -DQT_HOST_PATH=/c/Users/user/hostbuild/qtbase -DCMAKE_TOOLCHAIN_FILE=/c/Users/user/ghs_pack/es7_dev_env/hlos_dev_boot/toolchain_integrity.cmake -DQT_QMAKE_TARGET_MKSPEC=devices/integrity-armv8-SA8155P -DBUILD_qtdoc=OFF -DBUILD_qttranslations=OFF -DFEATURE_printdialog=OFF --debug-trycompile -DFEATURE_dbus=OFF -DFEATURE_dnslookup=OFF -DFEATURE_glib=OFF -DFEATURE_system_pcre2=OFF -DFEATURE_sql_mysql=OFF -DQT_FEATURE_harfbuzz=OFF -DFEATURE_pkg_config=OFF -DUNIX=ON -DCMAKE_HOST_WIN32=ON -GNinja -DCMAKE_INSTALL_PREFIX=/c/Users/user/targetbuild/
注意: INTEGRITYは静的なQtビルドのみをサポートしています。
注: QT_HOST_PATH
変数は Qt 6 で導入されました。クロスコンパイルする場合は、ホストプラットフォームのQtのインストール場所を設定する必要があります。これは、ホスト上で実行するツール(moc、rcc、androiddeployqtなど)を見つけるために使用されます。
INTEGRITY 用 Qt のビルド
ターミナルでcmake
を呼び出して Qt をビルドします。cmake
、ホストマシンのコアの数だけ実行できます。この例では6コアを使用しています:
cmake --build . --parallel 6
Qt のインストール
configure オプション-prefix $PWD/qtbase
を使っていない場合は、ターミナルで以下のコマンドを実行してください:
cd <Qt installation directory> cmake --install .
configure オプション-prefix $PWD/qtbase
を使用した場合は、cmake install
コマンドを実行せずに、ビルドディレクトリから Qt を使用することができます。
これでQtはsa8155ボード用に設定され、ビルドされました。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。