Erstellen von Qt für Qualcomm Snapdragon 8155P Board unter Windows 10
Die Einrichtung der Green Hills INTEGRITY- und Qualcomm-Entwicklungsumgebungen ist eine Voraussetzung, bevor Sie fortfahren. Siehe Installieren von Plattform-Abhängigkeiten.
Erstellen eines Batch-Skripts für Windows 10
Um die Entwicklungsumgebung für Qt für INTEGRITY einzurichten, erstellen Sie Qt aus den Quellen für das Qualcomm Snapdragon 8155P Board. Bevor Sie Qt für INTEGRITY erstellen, müssen Sie die Build-Umgebung einrichten. Hier ein Batch-Skript, um dies zu automatisieren, da es vor jedem Build durchgeführt werden muss.
Für Windows 10 erstellen Sie ein neues Batch-Skript setEnvironment.bat, und speichern Sie es in Ihrem Home-Ordner. Fügen Sie die folgenden Exportvariablen in das Skript ein:
@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"
Diese Exportpfade gehen davon aus, dass Sie bei der Installation von MULTI IDE und INTEGRITY die C:\ghs\comp_202014 and C:\Users\user\ghs_pack\*
Installationsverzeichnisse verwendet haben (siehe Installation von Plattformabhängigkeiten). Wenn Sie nicht die Standardverzeichnisse verwendet haben, passen Sie die Exportpfade entsprechend an.
Um Ihre Build-Umgebung zu initialisieren, führen Sie den folgenden Befehl in einem Windows CMD-Terminal aus:
setEnvironment.bat
Hinweis: Führen Sie diesen Befehl im Windows CMD-Terminal jedes Mal aus, wenn Sie Qt bauen, oder verwenden Sie die Build-Systeme qmake
oder CMake
.
Qt-Quellen beziehen
Sie können den Qt-Quellcode von Ihrem Qt-Konto herunterladen.
Sie können die Qt-Quellen auch aus dem Git-Repository beziehen, siehe Quellcode beziehen.
Hinweis: Die Qt-Quellen müssen Version 6.2 oder höher sein.
Hinweis: Qt-Module, die von Qt für INTEGRITY unterstützt werden, sind unter Unterstützte Qt-Module aufgeführt.
Erstellen von Qt Desktop für die Verwendung von Cross-Compiling-Tools
Die Cross-Kompilierung von Qt erfordert, dass ein Host-Build von Qt verfügbar ist. Während des Builds werden Tools wie moc, rcc, qmlcachegen, qsb und andere von dort aus aufgerufen. Für detailliertere Informationen lesen Sie bitte Qt cross-compiling.
Führen Sie die folgenden Befehle für den Windows 10 Host-Build aus:
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 .
Erstellen einer Toolchain-Datei für INTEGRITY
Um ein Projekt mit CMake crosskompilieren zu können, muss eine Toolchain-Datei angegeben werden. Diese CMake-Sprachdatei setzt die richtigen Werte für den Plattformnamen, den verwendeten Compiler/Linker und einen ganzen Haufen anderer toolchain-spezifischer Dinge. Für Integrity build auf Windows 10 erstellen Sie eine toolchain.cmake-Datei mit folgendem Inhalt:
# 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>")
Qt für INTEGRITY konfigurieren
Konfigurieren Sie Qt für das Qualcomm Snapdragon 8155P-Board mit den folgenden Befehlen: Windows 10 HOST
erfordert folgende Konfigurationszeile:
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/
Hinweis: INTEGRITY unterstützt nur statische Qt-Builds.
Hinweis: Die VariableQT_HOST_PATH
wurde in Qt 6 eingeführt. Beim Cross-Compiling muss diese Variable auf den Installationsort von Qt für die Host-Plattform gesetzt werden. Sie wird verwendet, um Werkzeuge zu finden, die auf dem Host ausgeführt werden sollen (moc, rcc, androiddeployqt usw.).
Erstellen von Qt für INTEGRITY
Bauen Sie Qt, indem Sie cmake
im Terminal aufrufen. Sie können cmake
mit so vielen Kernen auf Ihrem Host-Rechner ausführen, wie Sie möchten. In unserem Beispiel verwenden wir sechs Kerne:
cmake --build . --parallel 6
Installieren von Qt
Wenn Sie die Option configure -prefix $PWD/qtbase
in Configuring Qt nicht verwendet haben, führen Sie die folgenden Befehle in einem Terminal aus:
cd <Qt installation directory> cmake --install .
Wenn Sie die configure-Option -prefix $PWD/qtbase
verwendet haben, können Sie Qt aus dem Build-Verzeichnis verwenden, ohne den Befehl cmake install
auszuführen.
Qt ist nun für das sa8155 Board konfiguriert und gebaut.
© 2025 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.