윈도우 10에서 퀄컴 스냅드래곤 8155P 보드용 Qt 빌드하기
계속 진행하기 전에 Green Hills INTEGRITY 및 Qualcomm 개발 환경이 설정되어 있어야 합니다. 플랫폼 종속성 설치를 참조하십시오.
Windows 10용 배치 스크립트 만들기
Qt for INTEGRITY용 개발 환경을 설정하려면 Qualcomm Snapdragon 8155P 보드용 소스에서 Qt를 빌드합니다. INTEGRITY용 Qt를 빌드하기 전에 빌드 환경을 설정합니다. 다음은 각 빌드 전에 수행해야 하므로 이를 자동화하는 배치 스크립트입니다.
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"
이러한 내보내기 경로는 멀티 IDE 및 INTEGRITY를 설치하는 동안 C:\ghs\comp_202014 and C:\Users\user\ghs_pack\*
설치 디렉터리를 사용했다고 가정합니다( 플랫폼 종속성 설치 참조). 기본 디렉터리를 사용하지 않았다면 내보내기 경로를 적절히 조정하세요.
빌드 환경을 초기화하려면 Windows CMD 터미널에서 다음 명령을 실행합니다:
setEnvironment.bat
참고: Qt를 빌드할 때마다 Windows CMD 터미널에서 이 명령을 실행하거나 qmake
또는 CMake
빌드 시스템을 사용하십시오.
Qt 소스 가져오기
Qt 소스 코드는 Qt 계정에서 다운로드할 수 있습니다.
소스 코드 가져오기를 참조하여 Git 리포지토리에서 Qt 소스를 가져올 수도 있습니다.
참고: Qt 소스 버전은 6.2 이상이어야 합니다.
참고: INTEGRITY용 Qt에서 지원하는 Qt 모듈은 지원되는 Qt 모듈에 나열되어 있습니다.
크로스 컴파일 도구 사용을 위한 Qt Desktop 빌드하기
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
다음 구성 줄을 따라야 합니다:
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 설치하기
Qt 구성하기에서 -prefix $PWD/qtbase
옵션을 사용하지 않은 경우 터미널에서 다음 명령을 실행합니다:
cd <Qt installation directory> cmake --install .
구성 옵션을 사용한 경우 -prefix $PWD/qtbase
, cmake install
명령을 실행하지 않고도 빌드 디렉토리에서 Qt를 사용할 수 있습니다.
이제 Qt가 sa8155 보드용으로 구성 및 빌드되었습니다.
© 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.