我使用Qt Creator 2.2.1和Qt 4.7.4(32位)构建了一个程序,其输出是可执行文件。使用DependencyWalker打开exe,它显示exe使用以下DLL:
我想在构建所有依赖文件之后(在某些其他项目中可能会有所不同),除了Windows特定文件(上面列表中的前两个)要自动复制到目录中exe位于。
如何在不使用命令行脚本的情况下在Qt Creator或Qt系统中执行此操作?感谢。
答案 0 :(得分:13)
在QT 5.3中,您可以使用windeployqt
qt工具自动复制所需的库。
项目的.pro文件的以下补充应该可以解决问题,但您可能需要根据您的具体情况进行一些调整。
isEmpty(TARGET_EXT) {
win32 {
TARGET_CUSTOM_EXT = .exe
}
macx {
TARGET_CUSTOM_EXT = .app
}
} else {
TARGET_CUSTOM_EXT = $${TARGET_EXT}
}
win32 {
DEPLOY_COMMAND = windeployqt
}
macx {
DEPLOY_COMMAND = macdeployqt
}
CONFIG( debug, debug|release ) {
# debug
DEPLOY_TARGET = $$shell_quote($$shell_path($${OUT_PWD}/debug/$${TARGET}$${TARGET_CUSTOM_EXT}))
} else {
# release
DEPLOY_TARGET = $$shell_quote($$shell_path($${OUT_PWD}/release/$${TARGET}$${TARGET_CUSTOM_EXT}))
}
# # Uncomment the following line to help debug the deploy command when running qmake
# warning($${DEPLOY_COMMAND} $${DEPLOY_TARGET})
# Use += instead of = if you use multiple QMAKE_POST_LINKs
QMAKE_POST_LINK = $${DEPLOY_COMMAND} $${DEPLOY_TARGET}
答案 1 :(得分:5)
我会修改项目的* .pro文件并使用INSTALLS。要实际导致文件移动,您需要运行make install
。在Qt Creator中,您可以通过进入“项目”部分并添加新的构建步骤将其添加为正常构建过程的一部分。
## This sets MY_LIB_FILES the libs you want and should also correctly resolve
## the location of the libs.
win32 { ## For Windows builds
# Note: Check to make sure of file name case
MY_LIB_FILES += $$QMAKE_LIBDIR_QT/MINGWM10.DLL
MY_LIB_FILES += $$QMAKE_LIBDIR_QT/LIBGCC_S_DW2-1.DLL
MY_LIB_FILES += $$QMAKE_LIBDIR_QT/QTCORE4.DLL
MY_LIB_FILES += $$QMAKE_LIBDIR_QT/QTGUI4.DLL
}
unix { ## For unix builds
# MY_LIB_FILES += $$QMAKE_LIBDIR_QT/...xxxxxx....
}
## Define what files are 'extra_libs' and where to put them
extra_libs.files = MY_LIB_FILES
extra_libs.path = $$DESTDIR
## Tell qmake to add the moving of them to the 'install' target
INSTALLS += extra_libs
答案 2 :(得分:4)
即使不是完全自动的,您也可以轻松地用QtCreator做你想做的事。
将“INSTALLS”指令添加到项目(.pro)文件中(类似于jwernerny建议的那样):
win32 {
libstocopy.files = $$QMAKE_LIBDIR_QT/MINGWM10.DLL \
... (add other files)
}
# If using MSVC the code may end up in "release" or "debug" sub dir
# Remove this if that is not the case
win32 {
CONFIG(debug, debug|release): OUTDIR = debug
else: OUTDIR = release
}
libstocopy.path = $$OUT_PWD/$$OUTDIR
INSTALLS += libstocopy
在QtCreator的“项目”标签中(我的版本= 2.4.1),您现在添加了额外的构建步骤:
由于这些设置不随项目文件一起保存,因此每次创建新的构建配置时都必须执行第二部分(添加构建步骤)(例如,每个用于发布和调试)或将项目签出到新的位置。
答案 3 :(得分:-1)
不 - 不 - 0_o:)
在每个.pro文件中写
DLLDESTDIR = ../../myproject/bin(..dir dir&s; s struct ...)
QMAKE_POST_LINK = windeployqt --compiler-runtime $$ DLLDESTDIR
DLLDESTDIR - 文件名为TARGET(dll和exe)的完整路径。
结束!