Un clic en la escritura de envasado herramienta de publicación

Sólo en el archivo de proyecto contiene un código antes de compilar el completo programa de dependencias de envasado automático . (Fin de la dirección de origen)

uso

  • Método uno: copiar este código a su archivo de guiones (.pro) en.
  • Método dos: incluido en el archivo del proyecto PRO en el archivo de script puede ser.

Realización del principio

  • El qmake de QTla obtención de la variable de módulo correspondiente, cuando se el embalaje puede envasar de forma selectiva .
  • Embalado antes de que escanear el archivo QML locales , encontrar la necesidad de empaquetar las bibliotecas dependientes (plug-in).
  • Qmake mediante la adquisición de herramientas de los paquetes proporcionados por el oficial de Qt ruta en el paquete y llame a la realización del programa de trabajo.
  • Desde la adquisición de Qt QMake herramienta oficial de envasado donde el camino es fácil, sin tener que configurar manualmente la ruta sería más cómodo de usar.
  • La determinación de parámetros también puede ser proporcionado qmake el envasado de herramientas ( windeployqt.exe) parámetros de comando.

Las características adicionales

  Acerca del uso de las funciones que se describen en detalle en herramientas de scripting.

  • Desde QtCreator originalmente incluyó más debugy releasevariables de configuración, esto conducirá a qmake muy lento, esta herramienta qmake script puede optimizar la velocidad, pero el valor por defecto no está abierto , ya que es una característica experimental.
  • Debug macro de salida, el valor por defecto no está abierto .
  • abrir automáticamente el paquete después de la finalización del directorio de destino, habilitado de forma predeterminada .

Las actualizaciones posteriores

  • Actualmente sólo es compatible con la plataforma de Windows, seguimiento apoyará más plataformas.
  • Para las bibliotecas de terceros función de empaquetado.
  • módulo de optimización de la función empaqueta de forma selectiva.
  • QML lleno función de optimización.
  • paquete de optimización de biblioteca perdido.

Parte del código fuente

# 获取从QMake执行文件的所在目录得出Qt的bin路径
QT_BIN_DIR = $$replace(QMAKE_QMAKE, ^(\S*/)\S+$, \1)
# 获取Qt开发环境路径
QT_DIR = $${QT_BIN_DIR}../

# Qt打包工具参数配置集合
DEPLOY_OPTIONS += --force

# 可用的Qt模块
QT_AVAILABLE_LIBRARY_LIST = \
    bluetooth concurrent core declarative designer designercomponents enginio \
    gamepad gui qthelp multimedia multimediawidgets multimediaquick network nfc \
    opengl positioning printsupport qml qmltooling quick quickparticles quickwidgets \
    script scripttools sensors serialport sql svg test webkit webkitwidgets \
    websockets widgets winextras xml xmlpatterns webenginecore webengine \
    webenginewidgets 3dcore 3drenderer 3dquick 3dquickrenderer 3dinput 3danimation \
    3dextras geoservices webchannel texttospeech serialbus webview

# 扫描QT变量用于打包模块的参数配置
for (LIBRARY_MODULE, QT_AVAILABLE_LIBRARY_LIST) {
    if (contains(QT, $$LIBRARY_MODULE)) {
        DEPLOY_OPTIONS += --$$LIBRARY_MODULE
    }
    else {
        DEPLOY_OPTIONS += --no-$$LIBRARY_MODULE
    }
}

# 针对Qml模块配置打包参数
if (contains(QT, quick)) {
    DEPLOY_OPTIONS -= --no-qml
    DEPLOY_OPTIONS += --qml

    DEPLOY_OPTIONS -= --no-network
    DEPLOY_OPTIONS += --network

    DEPLOY_OPTIONS += --qmldir $${QT_DIR}qml/
}

if (!isEmpty(DESTDIR)) {
    # 如有设置目标输出路径则定向于该路径
    TARGET_OUT_DIR = $$OUT_PWD/$$DESTDIR/
}
else {
    # 判断是debug版本还是release版本
    CONFIG(debug, debug|release) {
        TARGET_OUT_DIR = $${OUT_PWD}/debug/
        DEPLOY_OPTIONS += --debug
    }
    else {
        TARGET_OUT_DIR = $${OUT_PWD}/release/
        DEPLOY_OPTIONS += --release
    }
}

# 实验性功能
!isEmpty(EXPERIMENTAL) {
    # 该功能(用于优化qmake调试输出)是否开放还需待定,因为会导致其他未知的问题。
    CONFIG = $$remove_extra_config_parameter($$CONFIG)
}

# 调试输出
!isEmpty(DEBUG_LOGGER) {
    message(TARGET_OUT_DIR: $$TARGET_OUT_DIR) # 生成文件的输出目录
    message(QMAKE_POST_LINK: $$QMAKE_POST_LINK) # 打印命令
}

win32 {
    # 拼接Qt部署程序的文件(windows平台下为windeployqt.exe)
    WIN_DEPLOY_BIN = $${QT_BIN_DIR}windeployqt.exe

    # 编译完成后执行打包命令
    QMAKE_POST_LINK += $$WIN_DEPLOY_BIN $$DEPLOY_OPTIONS $$TARGET_OUT_DIR$${TARGET}.exe

    # 扫描Qml依赖库,并在编译完成后自动复制qml依赖库到目标目录
    QMAKE_POST_LINK += $$get_copy_qml_library_cmd_line($$QT_DIR, $$QT_BIN_DIR, $$TARGET_OUT_DIR, $$RESOURCES)

    !isEmpty(DEPLOY_COMPLETE_AUTO_OPEN_EXPLORER) {
        # 打包完成后自动打开目标路径
        QMAKE_POST_LINK += && start $$TARGET_OUT_DIR
    }
}

Dirección de origen

  Bienvenido a colaborar juntos para mejorar.
https://github.com/aeagean/DeployByQmake

Publicados 354 artículos originales · ganado elogios 80 · Vistas de 150.000 +

Supongo que te gusta

Origin blog.csdn.net/nicai_xiaoqinxi/article/details/103699552
Recomendado
Clasificación