在 Windows 10 上为高通骁龙 8155P 开发板构建 Qt
在继续操作之前,必须先完成 Green Hills INTEGRITY 和高通开发环境的配置。请参阅《安装平台依赖项》。
为 Windows 10 创建批处理脚本
要为 INTEGRITY 版 Qt 配置开发环境,请根据高通骁龙 8155P 开发板的源代码编译 Qt。在编译 INTEGRITY 版 Qt 之前,请先设置好构建环境。以下是一个用于自动化此过程的批处理脚本,因为每次构建前都需要执行这些操作。
在 Windows 10 上创建一个名为 setEnvironment.bat 的新批处理脚本,并将其保存到您的主目录下。在脚本中添加以下 export 变量:
@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 或更高版本。
注意: Qt for INTEGRITY 支持的Qt 模块列于“支持的 Qt 模块”中。
为使用交叉编译工具而构建 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 语言文件会为平台名称、所用的编译器/链接器以及其他大量与工具链相关的设置配置正确的值。对于在 Windows 10 上构建 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
请使用以下命令为高通骁龙 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 ,并根据需要在主机上使用任意数量的核心。在本示例中,我们使用六个核心:
cmake --build . --parallel 6安装 Qt
如果您在“配置 Qt”中未使用-prefix $PWD/qtbase 配置选项,请在终端中运行以下命令:
cd <Qt installation directory>
cmake --install .如果您已使用过 `-prefix $PWD/qtbase` 配置选项,则可直接从构建目录中使用 Qt,无需运行 `cmake install ` 命令。
现在,Qt 已针对 sa8155 开发板完成配置和构建。
© 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.