在 Windows 10 上为高通骁龙 8155P 主板构建 Qt
在继续之前,需要设置好 Green Hills INTEGRITY 和 Qualcomm 开发环境。请参阅安装平台依赖项。
为 Windows 10 创建批脚本
要为 Qt for INTEGRITY 设置开发环境,请从高通 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 repo 获取 Qt源代码,请参阅获取源代码。
注意: Qt 源代码版本必须是 6.2 或更高版本。
使用交叉编译工具构建 Qt 桌面
交叉编译 Qt 要求 Qt 的主机构建可用。在编译过程中,会调用 moc、rcc、qmlcachegen、qsb 等工具。更多详细信息,请阅读交叉编译 Qt。
运行以下命令进行 Windows 10 Host 编译:
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
使用以下命令为 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
。在我们的示例中,我们使用了六个内核:
cmake --build . --parallel 6
安装 Qt
如果尚未使用配置Qt 中的 configure 选项-prefix $PWD/qtbase
,请在终端运行以下命令:
cd <Qt installation directory> cmake --install .
如果使用了-prefix $PWD/qtbase
中的 configure 选项,则可以从联编目录中使用 Qt,而无需运行cmake install
命令。
现在已为 sa8155 板配置并构建了 Qt。
© 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.