qt_generate_deploy_qml_app_script
QML 애플리케이션용 배포 스크립트를 생성합니다.
이 명령은 Qt6 패키지의 Qml 구성 요소에 정의되어 있으며, 다음과 같이 불러올 수 있습니다:
find_package(Qt6 REQUIRED COMPONENTS Qml)이 명령어는 Qt 6.3에서 도입되었습니다.
경고: CMake 3.19보다 낮은 버전을 사용하는경우 , qt_add_executable()에 MANUAL_FINALIZATION 옵션을 전달한 다음, 이 함수를 호출하기 전에 qt_finalize_target()을 호출해야 합니다.
개요
qt_generate_deploy_qml_app_script(
TARGET <target>
OUTPUT_SCRIPT <var>
[NO_UNSUPPORTED_PLATFORM_ERROR]
[NO_TRANSLATIONS]
[NO_COMPILER_RUNTIME]
[NO_PLUGINS] # since Qt 6.10
[EXCLUDE_PLUGIN_TYPES type_or_target...] # since Qt 6.10
[INCLUDE_PLUGIN_TYPES type_or_target...] # since Qt 6.10
[EXCLUDE_PLUGINS name...] # since Qt 6.10
[INCLUDE_PLUGINS name...] # since Qt 6.10
[DEPLOY_TOOL_OPTIONS ...]
[DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM]
[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() 를 사용하십시오. 이 명령어는 본 명령어와 동일한 인자 세트를 지원합니다.
설명
Qt 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 생성 시에만 작성됩니다. 이 스크립트는 install(SCRIPT) 명령과 함께 사용하도록 의도되었으며, install(TARGETS)를 사용하여 애플리케이션의 타깃을 설치한 후에 실행되어야 합니다.
배포 스크립트는 표준 설치 레이아웃에 적합한 옵션 세트를 사용하여 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 이외의 플랫폼에서는 Qt 번역 파일이 자동으로 배포됩니다. 이 동작을 중지하려면 NO_TRANSLATIONS 를 지정하십시오. qt_deploy_translations()를 사용하여 번역 파일을 사용자 정의 방식으로 배포할 수 있습니다.
Windows 데스크톱 애플리케이션의 경우, 컴파일러에 필요한 런타임 파일도 기본적으로 설치됩니다. 이를 방지하려면 NO_COMPILER_RUNTIME 을 지정하십시오.
Qt 6.7부터는 ` DEPLOY_TOOL_OPTIONS `을 사용하여 기본 배포 도구에 추가 옵션을 전달할 수 있습니다. 이 기능은 기본 배포 도구가 `macdeployqt` 또는 `windeployqt`인 경우에만 적용됩니다.
참고: 코드 서명 식별자처럼 공백을 포함하는값은 QTP0007이 NEW 로 설정된 경우에만 변경되지 않은 상태로 배포 도구에 전달됩니다. OLD 동작을 사용할 경우, 이러한 값은 생성된 스크립트에 따옴표 없이 기록되며 공백에서 분할되는데, 프로젝트에서는 이를 해결하기 위해 추가적인 따옴표 수준을 추가하곤 했습니다. 정책을 NEW 로 설정할 때는 이러한 불필요한 따옴표를 제거하십시오.
참고: 버전이 지정되지않은 ` qt_generate_deploy_qml_app_script() `는 `QTP0008`의 값에 따라 인수를 함수나 매크로를 통해 전달합니다. ` OLD ` 동작에서는 백슬래시나 ` ${var} ` 참조가 포함된 값이 매크로 확장 시점에 평가되므로, ` foo\\.dylib `와 같은 정규 표현식은 이스케이프 수준이 한 단계 감소합니다. 이는 ` DEPLOY_TOOL_OPTIONS ` 및 정규 표현식과 파일 목록 인자에 영향을 미칩니다. qt6_generate_deploy_qml_app_script() 를 직접 호출하면 이 문제를 피할 수 있습니다.
PRE_INCLUDE_REGEXES, PRE_EXCLUDE_REGEXES, POST_INCLUDE_REGEXES, POST_EXCLUDE_REGEXES, POST_INCLUDE_FILES 및 POST_EXCLUDE_FILES 옵션을 지정하여 런타임 종속성의 배포를 제어할 수 있습니다. 이러한 옵션은 모든 플랫폼에 적용되는 것은 아니며, 수정 없이 qt_deploy_runtime_dependencies()로 전달됩니다.
EXCLUDE_PLUGINS, EXCLUDE_PLUGIN_TYPES, INCLUDE_PLUGINS 및 INCLUDE_PLUGIN_TYPES 옵션은 Qt 플러그인을 선택하는 데 사용됩니다. 해당 옵션에 대한 설명은 qt_deploy_runtime_dependencies() 를 참조하십시오.
NO_PLUGINS 옵션을 사용하여 플러그인 배포를 완전히 비활성화할 수 있습니다.
QML이 아닌 애플리케이션을 배포하려면 대신 qt_generate_deploy_app_script()를 사용하십시오. 동일한 타깃에 대해 qt_generate_deploy_qml_app_script() 와 qt_generate_deploy_app_script()를 모두 호출하면 오류가 발생합니다.
예제
다음 예제는 Qt Quick 앱을 배포하는 방법을 보여줍니다.
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
NO_UNSUPPORTED_PLATFORM_ERROR
DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM
)
install(SCRIPT ${deploy_script})다음 예제는 기본 배포 도구에 추가 옵션을 전달하는 방법을 보여줍니다.
# Pass the values on to the deploy tool unchanged, see \l {QTP0007}.
qt_policy(SET QTP0007 NEW)
set(deploy_tool_options_arg "")
if(APPLE)
set(deploy_tool_options_arg
--hardened-runtime
"-codesign=Developer ID Application: Joe Developer (1234567890)"
)
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(), QTP0007 및 QTP0008.
© 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.