1 / 31
文档名称:

Qt学习VS2013编译Qt5.3.1的静态库.pdf

格式:pdf   大小:3,014KB   页数:31页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Qt学习VS2013编译Qt5.3.1的静态库.pdf

上传人:3144187108 2022/11/23 文件大小:2.94 MB

下载得到文件列表

Qt学习VS2013编译Qt5.3.1的静态库.pdf

文档介绍

文档介绍:该【Qt学习VS2013编译Qt5.3.1的静态库 】是由【3144187108】上传分享,文档一共【31】页,该文档可以免费在线阅读,需要了解更多关于【Qt学习VS2013编译Qt5.3.1的静态库 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.
Qt学****六)
分类:Qt(windows)2014-07-1108:36147人阅读评论(5)收藏举报
今天用Qt写了个小程序,拷到另一台电脑发现无法运行,缺少文
件。查了一下资料,发现是动态链接库的问题,因为原来一直用的微软
系列的开发工具,这个问题不怎么突出,现在用Qt写程序,这个问题
就很麻烦了。
针对这个问题网上找到的资料有两种解决方法,一是将程序需要的
库文件放在一起,这个显然很麻烦,而且个人很不喜欢这种方式;另一
种就是静态编译,所谓静态编译,就是编译器在编译可执行文件的时候,
将可执行文件需要调用的对应动态链接库中的部分提取出来,链接到可
执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。
下面介绍一下我自己编译静态库的过程,网上资料不少,但是介绍
的都不全面,加上我这方面的基础也不怎么样,着实花了一番功夫。不
多废话,开始介绍:
1、:qt-everywhere-opensource-src-
打开官网下载页面,点击红线画着的文字“zip”下载源码::.
保存图片,改后缀为7z,有下载网址
2、安装python:.
保存图片,改后缀为7z,有下载网址
3、下载完成后解压,注意硬盘的可用空间:
我的解压目录是:E:\Qt
这是我编译完的文件夹大小(包括编译目录和install目录)::.
4、根据你的VS版本进入相应的文件夹,我是win32-msvc2013::.
进入
E:\Qt\qt-everywhere-opensource-src-\qtbase\mkspecs\win32-ms
vc2013目录,有两个文件::.
,修改内容并保存,如下:
原内容:
[plain]viewplaincopyprint?
QMAKE_CFLAGS_RELEASE=-O2-MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO+=-O2-MD-Zi
QMAKE_CFLAGS_DEBUG=-Zi-MDd
修改为:
[plain]viewplaincopyprint?
QMAKE_CFLAGS_RELEASE=-O2-MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO+=-O2-MT-Zi
QMAKE_CFLAGS_DEBUG=-Zi-MTd
即将MD(动态)改为MT(静态)。
5、我的电脑装的是VS2013,由开始菜单打开WindowsStudioTools,:.
选择画红线的VS2013开发人员命令提示
6、在“VS2013开发人员命令提示”窗口中输入python::.
如果向上图一样不认命令,说明环境变量未配置:
输入:
[plain]viewplaincopyprint?
setPATH=%PATH%;F:\ProgramFiles\Python33
注:F:\ProgramFiles\Python33是Python的安装目录(与我的肯定不同,我不是安装在默
认位置的,默认位置是C:\Python33)
再次输入python,如下图就OK了::.
按下“Ctrl+z”,再回车,退出Python::.
转至Qt解压目录,我的是:
E:\Qt\qt-everywhere-opensource-src-:.
关键步骤:
执行configure:
输入:
[plain]viewplaincopyprint?
configure-confirm-license-opensource-platformwin32-msvc2013
-debug-and-release-static-prefix"E:\Qt\-static-vs2013"-qt-sql-sqlite
-qt-sql-odbc-plugin-sql-sqlite-plugin-sql-odbc-qt-zlib-qt-libpng-qt-libjpeg
-opengldesktop-qt-freetype-no-qml-debug-no-angle-nomaketests-nomakeexamples
-skipqtwebkit:.
其中”E:\Qt\-static-vs2013“为编译完后的安装目录。
回车执行,一会后执行完毕::.
7、接下来,执行nmake::.
回车,然后是漫长的等待,估计2个多小时吧,因为我晚上执行后就去
睡了,具体多少时间不清楚。
8、nmake完成,整个过程没出什么错,接着就可以install了,输入nmake
install命令:
,接下去就是测试能不能使用了。
:.
9、,工具->选项->构建路径->QtVersions->添加刚
才的安装目录:
10、切换到构建套件(Kit)选项卡,添加,这里我取名为”“,
更改”Qt版本“为刚才添加的编译完的静态版:.
:
11、新建一个QtWidgetsApplication::.
一路默认配置,下一步:
在配置Kit的时候会显示两个,Static就是静态版的,为了做对比,两
个都勾选::.
12、先用动态的编译(debug和release):
13、再用静态的编译(同样debug和release):
下面是静态编译debug版时的编译输出,我们看到启动的是E盘下面:.
的qmake,也就是我们编译输出的静态链接库:
[plain]viewplaincopyprint?
08:16:16:为项目untitled执行步骤...
08:16:16:正在启动"E:\Qt\-static-vs2013\bin\"
F:\WorkSpace\Qt\untitled\-r-specwin32-msvc2013

08:16:17:进程"E:\Qt\-static-vs2013\bin\"正常退出。
08:16:17:正在启动"F:\Qt_VS2013_Opengl_x86\Tools\QtCreator\bin\"

F:\Qt_VS2013_Opengl_x86\Tools\QtCreator\bin\-
E:\Qt\-static-vs2013\bin\..\untitled\-o

cl-c-nologo-Zm200-Zc:wchar_t-FS-Zi-MTd-GR-W3-w34100-w34189-EHsc
/Fddebug\-DUNICODE-DWIN32-DQT_WIDGETS_LIB-DQT_GUI_LIB-DQT_CORE_LIB
-I"E:\Qt\-static-vs2013\include"
-I"E:\Qt\-static-vs2013\include\QtWidgets"
-I"E:\Qt\-static-vs2013\include\QtGui"
-I"E:\Qt\-static-vs2013\include\QtCore"-I"debug"-I"."-I"."
-I"E:\Qt\-static-vs2013\mkspecs\win32-msvc2013"-Fodebug\
***@C:\Users\Kaven\AppData\Local\Temp\

cl-c-nologo-Zm200-Zc:wchar_t-FS-Zi-MTd-GR-W3-w34100-w34189-EHsc
/Fddebug\-DUNICODE-DWIN32-DQT_WIDGETS_LIB-DQT_GUI_LIB-DQT_CORE_LIB
-I"E:\Qt\-static-vs2013\include"
-I"E:\Qt\-static-vs2013\include\QtWidgets"
-I"E:\Qt\-static-vs2013\include\QtGui"
-I"E:\Qt\-static-vs2013\include\QtCore"-I"debug"-I"."-I"."
-I"E:\Qt\-static-vs2013\mkspecs\win32-msvc2013"-Fodebug\:.
***@C:\Users\Kaven\AppData\Local\Temp\
E:\Qt\-static-vs2013\bin\-DUNICODE-DWIN32-DQT_WIDGETS_LIB
-DQT_GUI_LIB-DQT_CORE_LIB-D_MSC_VER=1800-D_WIN32
-IE:/Qt/-static-vs2013/mkspecs/win32-msvc2013-IF:/WorkSpace/Qt/untitled
-IE:/Qt/-static-vs2013/include
-IE:/Qt/-static-vs2013/include/QtWidgets
-IE:/Qt/-static-vs2013/include/QtGui
-IE:/Qt/-static-vs2013/include/QtCore-I...\untitled\-o
debug\

cl-c-nologo-Zm200-Zc:wchar_t-FS-Zi-MTd-GR-W3-w34100-w34189-EHsc
/Fddebug\-DUNICODE-DWIN32-DQT_WIDGETS_LIB-DQT_GUI_LIB-DQT_CORE_LIB
-I"E:\Qt\-static-vs2013\include"
-I"E:\Qt\-static-vs2013\include\QtWidgets"
-I"E:\Qt\-static-vs2013\include\QtGui"
-I"E:\Qt\-static-vs2013\include\QtCore"-I"debug"-I"."-I"."
-I"E:\Qt\-static-vs2013\mkspecs\win32-msvc2013"-Fodebug\
***@C:\Users\Kaven\AppData\Local\Temp\

cl-c-nologo-Zm200-Zc:wchar_t-FS-Zi-MTd-GR-W3-w34100-w34189-EHsc
/Fddebug\-DUNICODE-DWIN32-DQT_WIDGETS_LIB-DQT_GUI_LIB-DQT_CORE_LIB
-I"E:\Qt\-static-vs2013\include"
-I"E:\Qt\-static-vs2013\include\QtWidgets"
-I"E:\Qt\-static-vs2013\include\QtGui"
-I"E:\Qt\-static-vs2013\include\QtCore"-I"debug"-I"."-I"."
-I"E:\Qt\-static-vs2013\mkspecs\win32-msvc2013"-Fodebug\
***@C:\Users\Kaven\AppData\Local\Temp\

echo1/*CREATEPROCESS_MANIFEST_RESOURCE_ID*/24/*RT_MANIFEST*/
"debug\">debug\:.
ifnotexistdebug\\
deldebug\
ifexistdebug\
debug\\
link/NOLOGO/DYNAMICBASE/NXCOMPAT/DEBUG/SUBSYSTEM:WINDOWS
"/MANIFESTDEPENDENCY:type='win32'name='-Controls'
version=''publicKeyToken='6595b64144ccf1df'language='*'
processorArchitecture='*'"/MANIFEST
/MANIFESTFILE:debug\:debug\
***@C:\Users\Kaven\AppData\Local\Temp\
正在创建库debug\\
ifexistdebug\
debug\\>NUL||del
debug\
ifnotexistdebug\
/fodebug\\
Microsoft(R)Windows(R)

Copyright(C).


ifnotexistdebug\
/NXCOMPAT/DEBUG/SUBSYSTEM:WINDOWS"/MANIFESTDEPENDENCY:type='win32'
name='-Controls'version=''
publicKeyToken='6595b64144ccf1df'language='*'processorArchitecture='*'"
/MANIFEST/MANIFESTFILE:debug\:debug\
***@C:\Users\Kaven\AppData\Local\Temp\
正在创建库debug\\
ifexistdebug\
debug\:.
08:16:34:进程"F:\Qt_VS2013_Opengl_x86\Tools\QtCreator\bin\"正常退出。
08:16:34:Elapsedtime:00:18.
打开项目路径,内容如下:
同样的源代码,编译后的结果比较:
先看debug版:
静态:大小只有82k
动态::.
再看release版:
动态:
静态::.
这4个程序的功能都一样,就是弹出一个窗口:
但是你会发现将4个文件单独复制出来,双击运行,动态生成的是无法
在未安装Qt链接库环境的电脑上运行的:
我虽然装了Qt,但是没有设置环境变量,所以动态编译的单文件(无
论是debug版还是release版)还是无法运行,错误如下:
但是,静态编译的就不同了,在任何一台普通电脑上,直接就能运行,
当然代价是执行文件变大::.
14、最后,用VS2013编译源文件,需要安装一个Qt插件,
详见:
打开VS2013,添加静态库的目录::.
:.
导入刚才那个用QtCreator创建的弹出窗口的工程::.
导入时的输出信息:
:.
[plain]viewplaincopyprint?
---(Import):
---(qmake):Using:e:\qt\-static-vs2013\bin\qmake
---(qmake):WorkingDirectory:F:\WorkSpace\Qt\untitled
---(qmake):Arguments:-tpvc""-o""
QMAKE_INCDIR_QT=$(QTDIR)\includeQMAKE_LIBDIR=$(QTDIR)\lib
QMAKE_MOC=$(QTDIR)\bin\=$(QTDIR)\bin\

---(qmake):ExitCode:0

---(Import):

===Updateuicsteps===
.

===1uicstepsupdated.===


===Updaterccsteps===

===0rccstepsupdated.===
Ctrl+F5,成功弹出一个窗口:
[plain]viewplaincopyprint?
还原NuGet程序包时出错::路径的形式不合法。
(Stringpath,BooleanfullCheck,Int32
maxPathLength,BooleanexpandShortPaths)
(Stringpath):.
(Solutionsolution)
(Solution
solution)
(vsBuildScope
Scope,vsBuildActionAction)。
1>------已启动生成:项目:untitled,配置:DebugWin32------
1>Moc'...
1>Uic'...
1>C:\ProgramFiles
(x86)\MSBuild\\\V120\(935,5):warning
MSB8027:

areGeneratedFiles\Debug\,
GeneratedFiles\Release\.
1>
1>
1>
1>
1>正在生成代码...
1>正在创建库debug\\
1>->F:\WorkSpace\Qt\untitled\debug\
==========生成:成功1个,失败0个,最新0个,跳过0个==========
OK,这篇文章终于写完了,稍后我会将编译好的静态库传至网盘,有
需要的可以自行下载。:.
:(保存链接
图片,,即为下载地址)