QT_DEPLOY_RUN타임_종속성
실행 파일에 필요한 Qt 플러그인, Qt 및 비 Qt 라이브러리를 배포합니다.
이 명령은 Qt6
패키지의 Core
컴포넌트에 정의되어 있으며, 다음과 같이 로드할 수 있습니다:
find_package(Qt6 REQUIRED COMPONENTS Core)
Qt에서 제공하는 대부분의 다른 CMake 명령과 달리 qt_deploy_runtime_dependencies()
은 배포 스크립트에서만 호출할 수 있습니다. 구성 단계에서는 프로젝트에서 직접 호출할 수 없습니다.
이 명령은 Qt 6.3에 도입되었습니다.
참고: 이 명령은 일반적으로 직접 호출할 필요가 없습니다. 다른 상위 레벨 명령에서 내부적으로 사용되지만, 보다 사용자 정의된 배포 로직을 구현하려는 프로젝트에서는 유용할 수 있습니다.
시놉시스
qt_deploy_runtime_dependencies( EXECUTABLE executable [ADDITIONAL_EXECUTABLES files...] [ADDITIONAL_LIBRARIES files...] [ADDITIONAL_MODULES files...] [GENERATE_QT_CONF] [BIN_DIR bin_dir] [LIBEXEC_DIR libexec_dir] [LIB_DIR lib_dir] [PLUGINS_DIR plugins_dir] [QML_DIR qml_dir] [VERBOSE] [NO_OVERWRITE] [NO_APP_STORE_COMPLIANCE] [NO_TRANSLATIONS] [NO_COMPILER_RUNTIME] [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...] )
설명
애플리케이션을 설치할 때 애플리케이션이 의존하는 라이브러리와 플러그인도 함께 설치하는 것이 바람직할 수 있습니다. 애플리케이션이 macOS 앱 번들이거나 Windows 실행 파일인 경우 설치 시간 스크립트에서 qt_deploy_runtime_dependencies()
을 호출하여 이러한 종속성을 배포할 수 있습니다. 이 명령은 비시스템 Qt 라이브러리와 적절한 Qt 플러그인 세트를 설치합니다.
Linux에서는 이 명령이 프로젝트에 포함된 Qt 관련 라이브러리 외에 추가 라이브러리를 배포합니다. 그러나 macOS나 Windows에서 실행할 때는 macdeployqt
또는 windeployqt
을 사용하며, 이 명령은 Qt에 특정한 라이브러리만 배포합니다.
이 명령은 기본 바이너리에 링크 관계가 존재하는 런타임 종속성만 고려합니다. QML 모듈은 배포하지 않습니다. 이에 대해서는 qt_deploy_qml_imports()를 참조하십시오.
인자
EXECUTABLE
옵션을 제공해야 합니다.
executable
인수는 빌드 디렉터리에 있는 실행 파일의 경로여야 합니다. 예를 들어 ${CMAKE_CURRENT_BINARY_DIR}/MyApp.exe
또는 더 동적으로 $<TARGET_FILE:MyApp>
입니다. <TARGET_FILE:>
와 같이 생성기 표현식으로 래핑되지 않은 원시 대상 이름을 지정하는 것은 지원되지 않습니다.
macOS 앱 번들의 경우 executable
인수는 기본 설치 위치를 기준으로 번들 디렉터리 경로여야 합니다. 예를 들어 MyApp.app
또는 더 동적으로 $<TARGET_FILE_NAME:MyApp>.app
입니다. <TARGET_FILE_NAME:>
와 같이 생성기 표현식으로 래핑되지 않은 원시 대상 이름을 지정하는 것은 지원되지 않습니다.
executable
과 관련된 다른 바이너리에 대한 종속성을 설치하는 것도 바람직할 수 있습니다. 예를 들어 프로젝트에서 제공하는 플러그인에는 추가 종속성이 있을 수 있지만 이러한 플러그인은 실행 파일에 직접 연결되지 않으므로 qt_deploy_runtime_dependencies()
에서 자동으로 검색되지 않습니다. ADDITIONAL_EXECUTABLES
, ADDITIONAL_LIBRARIES
, ADDITIONAL_MODULES
옵션을 사용하여 종속성을 배포해야 하는 추가 바이너리를 지정할 수 있습니다(명명된 바이너리 자체의 설치는 여전히 프로젝트의 책임입니다). 이러한 키워드의 명명은 CMake의 규칙을 따르므로 Qt 플러그인은 ADDITIONAL_MODULES
을 사용하여 지정할 수 있습니다. 각 값은 기본 설치 위치를 기준으로 한 경로여야 합니다. 값은 EXECUTABLE
옵션과 마찬가지로 생성기 표현식을 사용할 수 있습니다. <TARGET_FILE_NAME:>
와 같이 제너레이터 표현식으로 래핑되지 않은 원시 대상 이름을 지정하는 것은 지원되지 않습니다.
Windows 애플리케이션을 설치할 때 CMake의 기본 설치 디렉토리 구조를 따를 때 qt.conf 파일이 필요한 경우가 일반적입니다. GENERATE_QT_CONF
옵션이 주어지면 적절한 qt.conf
파일이 executable
과 같은 디렉터리에 작성됩니다. 해당 qt.conf
파일의 경로는 기본값은 CMake의 GNUInstallDirs 모듈에서 제공하는 CMAKE_INSTALL_xxxDIR
변수를 기반으로 합니다.
다음 표의 매개변수를 사용하여 이러한 기본값 중 일부를 재정의할 수 있으며, 모든 기본값은 기본 설치 위치에 상대적일 것으로 예상됩니다.
파라미터 | 영향을 받는 변수 | 참고 |
---|---|---|
BIN_DIR | QT_DEPLOY_BIN_DIR | |
LIBEXEC_DIR | QT_DEPLOY_LIBEXEC_DIR | Qt 6.7부터 |
LIB_DIR | qt_deploy_lib_dir | |
PLUGINS_DIR | qt_deploy_plugins_dir | |
QML_DIR | qt_deploy_qml_dir |
qt.conf
파일은 GENERATE_QT_CONF
제공 여부에 관계없이 executable
이 macOS 앱 번들인 경우 항상 작성됩니다. 이 경우 앱 번들의 디렉토리 레이아웃은 Apple의 요구 사항에 따라 결정되므로 ..._DIR
옵션도 무시됩니다.
VERBOSE
옵션을 제공하면 배포 단계에 대한 자세한 출력을 활성화할 수 있습니다. 또는 첫 번째 find_package(Qt6)
호출 전에 프로젝트에서 QT_ENABLE_VERBOSE_DEPLOYMENT 변수를 설정하여 기본적으로 배포 출력을 상세하게 표시하도록 할 수 있습니다.
qt_deploy_runtime_dependencies()
명령은 기본적으로 기존 파일을 덮어씁니다(일부 경고가 계속 표시될 수 있음). 기존 파일을 덮어쓰지 않으려면 NO_OVERWRITE
옵션을 사용하세요. 이 옵션은 현재 macOS 및 Windows 배포에만 영향을 줍니다.
기본적으로 executable
이 macOS 앱 번들인 경우, Apple의 앱 스토어 요구 사항을 준수하는 Qt 플러그인 및 Qt 라이브러리만 배포됩니다. NO_APP_STORE_COMPLIANCE
옵션을 지정하여 해당 제약 조건을 비활성화할 수 있습니다.
macOS 이외의 플랫폼에서는 Qt 번역이 자동으로 배포됩니다. 이 동작을 억제하려면 NO_TRANSLATIONS
을 지정하세요. 사용자 정의된 방식으로 번역을 배포하려면 qt_deploy_translations()를 사용합니다.
Windows 데스크톱 애플리케이션의 경우 컴파일러에 필요한 런타임 파일도 기본적으로 설치됩니다. 이를 방지하려면 NO_COMPILER_RUNTIME
을 지정하세요.
Qt 6.7부터는 DEPLOY_TOOL_OPTIONS
을 사용하여 기본 배포 도구에 추가 옵션을 전달할 수 있습니다. 이 옵션은 기본 배포 도구가 맥디플로이큐트 또는 윈디플로이큐트인 경우에만 적용됩니다.
Linux에서 런타임 종속성 배포는 CMake의 file(GET_RUNTIME_DEPENDENCIES)
명령을 기반으로 합니다. PRE_INCLUDE_REGEXES
, PRE_EXCLUDE_REGEXES
, POST_INCLUDE_REGEXES
, POST_EXCLUDE_REGEXES
, POST_INCLUDE_FILES
, POST_EXCLUDE_FILES
옵션은 이 컨텍스트에서만 의미가 있으며 변경되지 않고 file(GET_RUNTIME_DEPENDENCIES)
으로 전달됩니다. 자세한 내용은 해당 명령의 설명서를 참조하세요.
Linux에서는 시스템 라이브러리 디렉터리에 있는 런타임 종속성은 기본적으로 배포되지 않습니다. POST_EXCLUDE_REGEXES
을 지정하면 이 자동 제외가 수행되지 않습니다.
기본값 POST_EXCLUDE_REGEXES
은 QT_DEPLOY_IGNORED_LIB_DIRS의 값으로 구성됩니다.
예제
다음 예는 애플리케이션을 배포하는 방법을 보여줍니다 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) set_target_properties(MyApp PROPERTIES WIN32_EXECUTABLE TRUE MACOSX_BUNDLE TRUE ) # App bundles on macOS have an .app suffix if(APPLE) set(executable_path "$<TARGET_FILE_NAME:MyApp>.app") else() set(executable_path "\${QT_DEPLOY_BIN_DIR}/$<TARGET_FILE_NAME:MyApp>") endif() # Helper app, not necessarily built as part of this project. qt_add_executable(HelperApp helper.cpp) set(helper_app_path "\${QT_DEPLOY_BIN_DIR}/$<TARGET_FILE_NAME:HelperApp>") # Generate a deployment script to be executed at install time qt_generate_deploy_script( TARGET MyApp OUTPUT_SCRIPT deploy_script CONTENT " qt_deploy_runtime_dependencies( EXECUTABLE \"${executable_path}\" ADDITIONAL_EXECUTABLES \"${helper_app_path}\" GENERATE_QT_CONF VERBOSE )") # Omitting RUNTIME DESTINATION will install a non-bundle target to CMAKE_INSTALL_BINDIR, # which coincides with the default value of QT_DEPLOY_BIN_DIR used above, './bin'. # Installing macOS bundles always requires an explicit BUNDLE DESTINATION option. install(TARGETS MyApp HelperApp # Install to CMAKE_INSTALL_PREFIX/bin/MyApp.exe # and ./binHelperApp.exe BUNDLE DESTINATION . # Install to CMAKE_INSTALL_PREFIX/MyApp.app/Contents/MacOS/MyApp ) install(SCRIPT ${deploy_script}) # Add its runtime dependencies
다음 예는 DEPLOY_TOOL_OPTIONS
매개 변수를 사용하여 macdeployqt 및 windeployqt에 다른 옵션을 전달하는 방법을 보여줍니다.
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() # Generate a deployment script to be executed at install time qt_generate_deploy_script( TARGET MyApp OUTPUT_SCRIPT deploy_script CONTENT " qt_deploy_runtime_dependencies( EXECUTABLE \"${executable_path}\" DEPLOY_TOOL_OPTIONS "${deploy_tool_options_arg}" GENERATE_QT_CONF VERBOSE )")
qt_generate_deploy_app_script(), qt_deploy_qt_conf() 및 qt_deploy_qml_imports()도 참조하십시오 .
© 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.