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
QT
la 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
debug
yrelease
variables 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