Despliegue
Utiliza la API de despliegue CMake de Qt para desplegar proyectos Qt para plataformas de escritorio. La API soporta varias plataformas de destino, que puedes encontrar en la documentación de qt_generate_deploy_app_script().
El proceso de despliegue depende de si tu proyecto es una aplicación Qt Widgets o una aplicación Qt Quick. Incluso si estás planeando desplegar sólo aplicaciones Qt Quick, lee primero sobre el despliegue de aplicaciones Qt Widgets para entender el proceso.
Despliegue de una aplicación Qt Widgets
Esta sección muestra cómo desplegar una aplicación Qt Widgets con un ejemplo de un simple proyecto C++ Qt.
cmake_minimum_required(VERSION 3.16) project(MyApp VERSION 1.0.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Qt6 REQUIRED COMPONENTS Core) qt_standard_project_setup() qt_add_executable(MyApp main.cpp) target_link_libraries(MyApp PRIVATE Qt6::Core)
Es necesario indicar a CMake que instale el destino de la aplicación en la ubicación adecuada. En macOS, los bundles se instalan directamente en ${CMAKE_INSTALL_PREFIX}, en otras plataformas en el directorio "bin" debajo.
install(TARGETS MyApp
BUNDLE DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)Tenga en cuenta que qt_standard_project_setup() extrae de CMake GNUInstallDirs.cmake. Esto es lo que define la variable CMAKE_INSTALL_BINDIR.
También necesitas generar un script de despliegue. Un script de despliegue es código CMake que se ejecuta en el momento de la instalación. Este código se encarga de recoger las dependencias en tiempo de ejecución y las copia en el directorio de instalación.
qt_generate_deploy_app_script(
TARGET MyApp
OUTPUT_SCRIPT deploy_script
NO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})El comando qt_generate_deploy_app_script() genera el script de despliegue en el directorio de construcción. El nombre del archivo de script generado se almacena en la variable deploy_script. La llamada a install(SCRIPT) indica a CMake que ejecute el script en la instalación.
El proyecto se puede instalar con cmake --install . o ninja install como cualquier otro proyecto basado en CMake. Tras la instalación, el directorio de instalación contiene las bibliotecas compartidas y los activos necesarios para ejecutar la aplicación. En otras palabras, la instalación produce un directorio autocontenido, listo para ser empaquetado - por ejemplo por cpack.
Despliegue de una aplicación Qt Quick
Desplegar un proyecto Qt Quick requiere un comando diferente para generar el script de despliegue. El resto de los pasos son similares al despliegue de una aplicación Qt Widgets.
En primer lugar, se crea la aplicación Qt Quick.
cmake_minimum_required(VERSION 3.16)
project(MyApp VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 REQUIRED COMPONENTS Core)
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
)Instala la aplicación como antes.
install(TARGETS MyApp
BUNDLE DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)Para generar el script de despliegue, llama a qt_generate_deploy_qml_app_script () en lugar de qt_generate_deploy_app_script().
qt_generate_deploy_qml_app_script(
TARGET MyApp
OUTPUT_SCRIPT deploy_script
)
install(SCRIPT ${deploy_script})En la instalación, se desplegará el binario de la aplicación, incluyendo los archivos QML y las bibliotecas compartidas y activos de Qt que utiliza el proyecto. De nuevo, el directorio resultante es autocontenido y puede ser empaquetado por herramientas como cpack.
© 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.