이 페이지에서

qt_generate_deploy_app_script

애플리케이션용 배포 스크립트를 생성합니다.

이 명령어는 Qt6 패키지의 Core 컴포넌트에 정의되어 있으며, 다음과 같이 불러올 수 있습니다:

find_package(Qt6 REQUIRED COMPONENTS Core)

이 명령어는 Qt 6.3에서 도입되었습니다.

참고: 이 명령어는 현재 Windows, macOS 및 Linux에서만 지원됩니다.

개요

qt_generate_deploy_app_script(
    TARGET target
    OUTPUT_SCRIPT <var>
    [NO_TRANSLATIONS]
    [NO_COMPILER_RUNTIME]
    [NO_UNSUPPORTED_PLATFORM_ERROR]
    [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 ...]
    [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_app_script() 를 사용하십시오. 이 명령어는 본 명령어와 동일한 인자 세트를 지원합니다.

설명

install(TARGETS) 를 사용하여 실행 파일을 설치하면 해당 타깃의 실행 파일만 설치됩니다(전체 번들을 복사하는 macOS 앱 번들은 예외). 실행 파일이 의존하는 다른 라이브러리나 플러그인은 직접 명시적으로 설치해야 합니다. qt_generate_deploy_app_script() 는 이 과정을 간소화하기 위한 편의 명령어입니다. 이 명령어는 애플리케이션이 Qt에서 권장하는 설치 디렉터리 구조를 상당히 충실히 따를 것을 전제로 합니다. 이 구조는 GNUInstallDirs에 의해 결정되는 CMake의 기본 설치 레이아웃을 기반으로 합니다(단, macOS 앱 번들의 경우 Apple의 요구 사항을 따릅니다).

이 명령어는 OUTPUT_SCRIPT 옵션으로 지정한 변수에 저장될 이름의 스크립트를 생성합니다. 이 스크립트는 CMake 생성 시점에 한 번만 작성됩니다. 이 스크립트는 install(SCRIPT) 명령어와 함께 사용하도록 설계되었으며, install(TARGETS)를 사용하여 애플리케이션의 타깃을 설치한 후에 실행되어야 합니다.

배포 스크립트는 표준 설치 레이아웃에 적합한 옵션 세트를 사용하여 qt_deploy_runtime_dependencies()를 호출합니다. 현재 이 기능은

  • macOS 호스트에서 빌드된 macOS 앱 번들,
  • Linux 호스트에서 빌드된 Linux 실행 파일,
  • Windows 호스트에서 빌드된 Windows 실행 파일

Linux 호스트에서 Windows 실행 파일을 크로스 빌드하는 경우나 이와 유사한 시나리오는 현재 지원되지 않습니다. 이러한 상황에서 qt_generate_deploy_app_script() 를 호출하면 NO_UNSUPPORTED_PLATFORM_ERROR 옵션이 지정되지 않은 한 치명적인 오류가 발생합니다.

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_app_script() `은 ` QTP0008`의 값에 따라 인수를 함수나 매크로를 통해 전달합니다. ` OLD ` 동작에서는 백슬래시나 ` ${var} ` 참조가 포함된 값이 매크로 확장 시점에 평가되므로, ` foo\\.dylib `과 같은 정규 표현식은 이스케이프 수준이 한 단계 감소합니다. 이는 ` DEPLOY_TOOL_OPTIONS ` 및 정규 표현식과 파일 목록 인수에 영향을 미칩니다. qt6_generate_deploy_app_script() 를 직접 호출하면 이 문제를 피할 수 있습니다.

QML 애플리케이션을 배포하려면 대신 qt_generate_deploy_qml_app_script() 를 사용하십시오.

사용자 정의 배포 스크립트를 생성하려면 qt_generate_deploy_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 옵션을 사용하면 플러그인 배포를 완전히 비활성화할 수 있습니다.

예제

다음 예제는 MyApp 를 사용하여 애플리케이션을 배포하는 방법을 보여줍니다.

cmake_minimum_required(VERSION 3.16...3.22)
project(MyThings)

find_package(Qt6 REQUIRED COMPONENTS Core)
qt_standard_project_setup()

qt_add_executable(MyApp main.cpp)

install(TARGETS MyApp
    BUNDLE  DESTINATION .
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

qt_generate_deploy_app_script(
    TARGET MyApp
    OUTPUT_SCRIPT deploy_script
    NO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})

다음 예제는 DEPLOY_TOOL_OPTIONS 매개변수를 사용하여 macdeployqt 및 windeployqt에 서로 다른 옵션을 전달하는 방법을 보여줍니다.

# 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_app_script(
    TARGET MyApp
    OUTPUT_SCRIPT deploy_script
    NO_UNSUPPORTED_PLATFORM_ERROR
    DEPLOY_TOOL_OPTIONS ${deploy_tool_options_arg}
)
install(SCRIPT ${deploy_script})

참조: qt_standard_project_setup(), qt_generate_deploy_script(), qt_generate_deploy_qml_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.