QT_GENERATE_DEPLOY_QML_APP_스크립트
QML 애플리케이션의 배포 스크립트를 생성합니다.
이 명령은 Qt6
패키지의 Qml
컴포넌트에 정의되어 있으며, 다음과 같이 로드할 수 있습니다:
find_package(Qt6 REQUIRED COMPONENTS Qml)
이 명령은 Qt 6.3에 도입되었습니다.
경고: 3.19 미만의 CMake 버전을 사용하는 경우, 이 함수를 호출하기 전에 qt6_add_executable()에 MANUAL_FINALIZATION
옵션을 전달한 다음 qt6_finalize_target()을 호출해야 합니다.
시놉시스
qt_generate_deploy_qml_app_script( TARGET <target> OUTPUT_SCRIPT <var> [NO_UNSUPPORTED_PLATFORM_ERROR] [NO_TRANSLATIONS] [NO_COMPILER_RUNTIME] [DEPLOY_TOOL_OPTIONS ...] [DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM] [MACOS_BUNDLE_POST_BUILD] [PRE_INCLUDE_REGEXES regexes...] [PRE_EXCLUDE_REGEXES regexes...] [POST_INCLUDE_REGEXES regexes...] [POST_EXCLUDE_REGEXES regexes...] [POST_INCLUDE_FILES files...] [POST_EXCLUDE_FILES files...] )
버전 없는 명령이 비활성화되어 있으면 qt6_generate_deploy_qml_app_script()
을 대신 사용합니다. 이 명령과 동일한 인수 집합을 지원합니다.
설명
QML 모듈이기도 한 실행 가능한 타깃을 설치하려면 타깃 자체 외에도 여러 가지를 배포해야 합니다. 프로젝트의 Qt 라이브러리 및 기타 라이브러리, Qt 플러그인, 애플리케이션이 사용하는 모든 QML 모듈의 런타임 부분도 모두 설치해야 할 수 있습니다. macOS 앱 번들의 경우 설치 레이아웃도 다른 플랫폼과 다를 수 있습니다. qt_generate_deploy_qml_app_script()
은 이 프로세스를 간소화하기 위한 편의 명령으로, QML이 아닌 애플리케이션에 대해 qt_generate_deploy_app_script()가 수행하는 것과 유사합니다.
이 명령은 애플리케이션이 Qt의 권장 설치 디렉토리 구조를 상당히 가깝게 따를 것으로 예상합니다. 이 구조는 GNUInstallDirs에 의해 결정되는 CMake의 기본 설치 레이아웃을 기반으로 합니다(단, macOS 앱 번들은 Apple의 요구 사항을 따릅니다). QML 모듈은 플랫폼에 적합한 위치에 설치됩니다. macOS 번들의 경우 각 QML 모듈의 qmldir
파일은 Resources/qml
아래의 적절한 하위 디렉터리에 설치되고 모듈의 플러그인(있는 경우)은 PlugIns
아래에 설치됩니다. 앱 번들은 기본 설치 위치에 직접 설치되는 것으로 가정합니다(아래 예시 참조). 다른 모든 플랫폼의 경우 qmldir
및 모듈의 플러그인은 모두 기본 설치 위치를 기준으로 하는 qml
아래의 적절한 하위 디렉터리에 설치됩니다.
qt_generate_deploy_qml_app_script()
는 OUTPUT_SCRIPT
옵션에 의해 이름이 지정된 변수에 저장되는 스크립트를 생성합니다. 이 스크립트는 CMake 생성 시에만 작성됩니다. 이 스크립트는 설치( 스크립트) 명령과 함께 사용하기 위한 것으로, 설치(타깃)를 사용하여 애플리케이션의 타깃을 설치한 후에 실행해야 합니다.
배포 스크립트는 표준 설치 레이아웃에 적합한 옵션 세트를 사용하여 qt_deploy_qml_imports() 를 호출합니다. macOS 앱 번들 및 Windows 타겟의 경우, 표준 설치 레이아웃에 적합한 옵션과 함께 qt_deploy_runtime_dependencies()도 호출합니다.
qt_deploy_runtime_dependencies
에서 지원하지 않는 플랫폼에 대해 qt_generate_deploy_qml_app_script()
을 호출하면 NO_UNSUPPORTED_PLATFORM_ERROR
옵션이 제공되지 않는 한 치명적인 오류가 발생합니다. 이 옵션을 지정하고 지원되지 않는 플랫폼용으로 프로젝트를 빌드하면 QML 모듈이나 일반 런타임 종속성이 설치되지 않습니다. QML 모듈이 계속 설치되도록 하려면 NO_UNSUPPORTED_PLATFORM_ERROR
및 DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM
옵션을 모두 지정하세요. 후자의 옵션은 프로젝트의 일부로 빌드된 QML 모듈이 계속 설치되도록 합니다.
MACOS_BUNDLE_POST_BUILD
옵션은 target
이 macOS 앱 번들인 경우 추가 단계를 활성화합니다. 빌드 후 규칙이 생성되어 배포 스크립트를 사용하여 애플리케이션이 빌드 디렉토리에서 직접 실행될 수 있도록 가져온 QML 모듈을 충분히 배포합니다(기본적으로 qmldir
파일과 플러그인에 대한 심볼릭 링크만). 이는 일반적으로 애플리케이션 개발을 지원하기 위해 바람직합니다. MACOS_BUNDLE_POST_BUILD
은 다른 모든 플랫폼에서 무시됩니다.
macOS 이외의 플랫폼에서는 Qt 번역이 자동으로 배포됩니다. 이 동작을 억제하려면 NO_TRANSLATIONS
을 지정하세요. 사용자 정의된 방식으로 번역을 배포하려면 qt_deploy_translations()를 사용하십시오.
Windows 데스크톱 애플리케이션의 경우 컴파일러에 필요한 런타임 파일도 기본적으로 설치됩니다. 이를 방지하려면 NO_COMPILER_RUNTIME
을 지정하세요.
Qt 6.7부터는 DEPLOY_TOOL_OPTIONS
을 사용하여 기본 배포 도구에 추가 옵션을 전달할 수 있습니다. 이 옵션은 기본 배포 도구가 맥디플로이큐트 또는 윈디플로이큐트인 경우에만 적용됩니다.
PRE_INCLUDE_REGEXES
, PRE_EXCLUDE_REGEXES
, POST_INCLUDE_REGEXES
, POST_EXCLUDE_REGEXES
, POST_INCLUDE_FILES
, POST_EXCLUDE_FILES
옵션을 지정하여 런타임 종속성의 배포를 제어할 수 있습니다. 이러한 옵션은 모든 플랫폼에 적용되는 것은 아니며 수정되지 않은 상태로 qt_deploy_runtime_dependencies()로 전달됩니다.
QML이 아닌 애플리케이션을 배포하려면 대신 qt_generate_deploy_app_script()를 사용하십시오. 동일한 대상에 대해 qt_generate_deploy_qml_app_script()
와 qt_generate_deploy_app_script()를 모두 호출하는 것은 오류입니다.
예제
다음 예는 QtQuick 앱을 배포하는 방법을 보여줍니다.
cmake_minimum_required(VERSION 3.16...3.22) project(MyThings) find_package(Qt6 6.3 REQUIRED COMPONENTS Core Qml) qt_standard_project_setup() qt_add_executable(MyApp main.cpp) qt_add_qml_module(MyApp URI Application VERSION 1.0 QML_FILES main.qml MyThing.qml ) install(TARGETS MyApp BUNDLE DESTINATION . RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) qt_generate_deploy_qml_app_script( TARGET MyApp OUTPUT_SCRIPT deploy_script MACOS_BUNDLE_POST_BUILD NO_UNSUPPORTED_PLATFORM_ERROR DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM ) install(SCRIPT ${deploy_script})
다음 예제는 기본 배포 도구에 추가 옵션을 전달하는 방법을 보여줍니다.
set(deploy_tool_options_arg "") if(APPLE) set(deploy_tool_options_arg --hardened-runtime) elseif(WIN32) set(deploy_tool_options_arg --no-compiler-runtime) endif() qt_generate_deploy_qml_app_script( ... DEPLOY_TOOL_OPTIONS ${deploy_tool_options_arg} ) install(SCRIPT ${deploy_script})
qt_standard_project_setup() 및 qt_generate_deploy_app_script()도 참조하십시오 .
© 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.