Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行。因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe。
如果要自己复制dll。需要配置pro,配置方法如下(即将外部库dll拷贝到构建文件build-kls_master-Desktop_Qt_5_11_2_ MSV C2015_64bit-Debug文件夹下的bin文件下)
文件目录如下
#配置链接库更改后
#百度在 Qt 的 .pro 中定义拷贝文件或者文件夹文件
#$$PWD 获得当前工作目录路径的字符串值
#replace第一个参数是要修改的字符串,第二个参数是要替换的字符串,第三个参数是替换成什么样的字符串.
#Unix使用斜杆/ 作为路径分隔符,Windows用 反斜杠\ 作为路径分隔符,在程序中,字符串中的“\\”主要是为了转义,“\\”转义后被理解为“\”
#pwd=F:\\bishe_qt_kls\\kls_qt(即kls_qt.pro所在的路径)
#完整的路径为pwd\..\dependencies\opencv\bin\*
#.\ 表示项目文件所在目录 ..\ 表示项目文件所在目录向上一级目录 ..\..\表示项目文件所在目录向上二级目录
#$$replace(PWD, /, \\)\..\dependencies\opencv\bin\* 这句话找到了opencv的文件路径,即动态库dll的路径
#$$OUT_PWD代表的是项目的构建路径,也就是输出路径,
#将当前文件下的bin文件夹下的内容,拷贝到输出文件(即build-kls_master-Desktop_Qt_5_11_2_MSVC2015_64bit-Debug)这个文件目录下,这样方便工程发布
#XCOPY是COPY的扩展,可以把指定的目录连文件和目录结构一并拷贝,但不能拷贝系统文件
#执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称
#$$PWD代表的是.pro文件所在路径,所以$$PWD表示当前路径
#$$OUT_PWD代表的是项目的构建路径,也就是输出路径,拷贝在debug文件夹下面所以后面加了一个debug.
win32:CONFIG(release, debug|release):{
QMAKE_PRE_LINK += xcopy $$replace(PWD, /, \\)\..\dependencies\opencv\bin\* $$replace(OUT_PWD, /, \\)\.\bin\ /s /f /h /y /d &
LIBS += -L$$PWD/../dependencies/opencv/lib/ -lopencv_world331
}
else:win32:CONFIG(debug, debug|release):{
QMAKE_PRE_LINK += xcopy $$replace(PWD, /, \\)\..\dependencies\opencv\bin\* $$replace(OUT_PWD, /, \\)\.\bin\ /s /f /h /y /d &
LIBS += -L$$PWD/../dependencies/opencv/lib/ -lopencv_world331d
}
##include包含目录
INCLUDEPATH += $$PWD/../dependencies/opencv/include
##头文件包含路径
DEPENDPATH += $$PWD/../dependencies/opencv/include