我在 Windows 10 下的 qt 部署有问题。一开始,我在 Windows 10 上使用 QtCreator 4.5.0 和 Qt 5.10。对于部署,我像这个问题中的 awnser 一样配置我的项目文件(Automatic Copy of Dependent Qt Creator 中的文件)一年多以来它工作正常,但自去年年底以来它没有。如果我构建发布版本一切都很好,但在调试模式下,一些 dll 丢失了。如果我手动复制这些程序运行正确,否则不会显示任何图标。到目前为止,我可以在 git 中看到它,项目文件中没有任何修改,因为它最终可以正常工作。
项目文件中的部署行:
#######################################
# Deploy Settings
TARGET_CUSTOM_EXT = .exe
DEPLOY_COMMAND = windeployqt
ProgramData.path = C:/ProgramData/Application
ProgramData.files += ressource/xml/config.xml
ProgramData.files += ressource/xml/user.xml
ProgramData.files += ressource/xml/documentation.xml
INSTALLS += ProgramData
# copy to make install
CONFIG( release ) {
AdditionalFiles.path = $${OUT_PWD}/$${DESTDIR}/ressource
AdditionalFiles.files += ressource/xml/config.xml
AdditionalFiles.files += ressource/xml/user.xml
AdditionalFiles.files += ressource/xml/documentation.xml
AdditionalFiles.files += ressource/install.nsi
AdditionalFiles.files += release_notes/*.txt
INSTALLS += AdditionalFiles
}
CONFIG( debug, debug|release ) {
DEPLOY_TARGET = $$shell_quote($$shell_path($${OUT_PWD}/debug/$${TARGET}$${TARGET_CUSTOM_EXT}))
} else {
DEPLOY_TARGET = $$shell_quote($$shell_path($${OUT_PWD}/release/$${TARGET}$${TARGET_CUSTOM_EXT}))
}
QMAKE_POST_LINK += $${DEPLOY_COMMAND} $${DEPLOY_TARGET}
这是我完整的项目文件:
QT += core gui network widgets winextras
TARGET = Application
TEMPLATE = app
TRANSLATIONS = \
translation/Application_de.ts \
translation/Application_en.ts \
translation/Application_es.ts \
translation/Application_fr.ts \
translation/Application_nl.ts
# Settings for favicon/tasksymbol
win32:RC_ICONS += ressource/favicon/favicon.ico
QMAKE_CXXFLAGS += -std=c++11
DEFINES = QT_MESSAGELOGCONTEXT
build_pass:CONFIG(debug, debug|release) {
CONFIG += warn_on
}
#######################################
# Build dir settings
Release:DESTDIR = release
Release:OBJECTS_DIR = release/.obj
Release:MOC_DIR = release/.moc
Release:RCC_DIR = release/.rcc
Release:UI_DIR = release/.ui
Debug:DESTDIR = debug
Debug:OBJECTS_DIR = debug/.obj
Debug:MOC_DIR = debug/.moc
Debug:RCC_DIR = debug/.rcc
Debug:UI_DIR = debug/.ui
#######################################
# Deploy Settings
TARGET_CUSTOM_EXT = .exe
DEPLOY_COMMAND = windeployqt
ProgramData.path = C:/ProgramData/Application
ProgramData.files += ressource/xml/config.xml
ProgramData.files += ressource/xml/user.xml
ProgramData.files += ressource/xml/documentation.xml
INSTALLS += ProgramData
# copy to make install
CONFIG( release ) {
AdditionalFiles.path = $${OUT_PWD}/$${DESTDIR}/ressource
AdditionalFiles.files += ressource/xml/config.xml
AdditionalFiles.files += ressource/xml/user.xml
AdditionalFiles.files += ressource/xml/documentation.xml
AdditionalFiles.files += ressource/install.nsi
AdditionalFiles.files += release_notes/*.txt
INSTALLS += AdditionalFiles
}
CONFIG( debug, debug|release ) {
DEPLOY_TARGET = $$shell_quote($$shell_path($${OUT_PWD}/debug/$${TARGET}$${TARGET_CUSTOM_EXT}))
} else {
DEPLOY_TARGET = $$shell_quote($$shell_path($${OUT_PWD}/release/$${TARGET}$${TARGET_CUSTOM_EXT}))
}
QMAKE_POST_LINK += $${DEPLOY_COMMAND} $${DEPLOY_TARGET}
# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
#######################################
# Main Project entry
include ( src/app.pri)
#######################################
# Resource files
RESOURCES += \
ressource/Images/Images.qrc
#######################################
# Distfiles
DISTFILES += \
ressource/install.nsi \
favicon.ico
# XML Files
DISTFILES += \
ressource/config.xml \
ressource/user.xml \
ressource/documentation.xml
# Release Notes
DISTFILES += \
release_notes/4_2_0.txt \
release_notes/4_2_3.txt \
release_notes/4_3_0.txt \
release_notes/Template.txt
# Translation
DISTFILES += \
translation/convert_cute_TS_to_gnu_PO.sh \
translation/convert_gnu_PO_to_cute_TS.sh
用于调试和发布版本的 windeployqt --list 映射的输出:
有人有想法或提示让我找到错误吗?
谢谢斯文·阿诺·乔彭