VS2010编译Qt5.2.1源码
环境搭建:1.qt5.2.1源码(qt5.2.1sdk不知道是否会影响编译,安装qt时选择安装源码)
2.VS2010(安装时建议选择整个项目安装)
3. Perl(通过内联网)
4.Python(可以安装最新版本,只需要兼容32位,亲测版本可用)
安装Qt源码:安装qt5.2.1
安装时请确保以下全部安装,否则会丢失src源码
打开安装目录下的F:qt5.2.15.2.1Srcqtbase查看configure是否存在
Qt编译过程中,默认是动态编译,即不会生成.exe文件。 如果您只需要生成.dll,则不需要更改它。 如果要静态编译.dll,需要进行如下修改
步骤进入F:qt5.2.15.2.1Srcqtbasemkspecswin32-msvc2010更改qmake.conf文件
将要
改成
D 是动态的,T 是静态的
编译过程:
Qt5.2.1的configure.exe位置与其他版本不同,所以编译时应切换到qtbase根目录,负责执行configure时会报该命令不存在的错误。 示例(F:qt5215.2.1Srcqtbase)。
编译时应该使用32位的VisualStudiox86Win64命令提示符(2010),也就是x86,而VS2010没有自带32位命令提示符qt源码编译方法,所以通过VisualStudiox64Win64命令提示符(2010)编译出来的dll都是64位的少量。 替换dll时,会导致程序打开困难。您可以按照以下说明查询生成的dll的版本
dumpbin/headersD:QTbinQt5Core.dll|findstr 红色标记的部分是生成的.ll的路径。
请参阅下文了解如何生成 32 位命令提示符 - 问题 2
确认所选的命令提示符符合自己需要的位数后,继续使用configure命令进行编译:
1、只生成release版本,即QtCore.dll,不生成QtCored.dll,最后一条指令是强制生成.phb文件
配置发布-opensource-confirm-license-platformwin32-msvc2010-opengldesktop-nomakeexamples-nomaketests-prefixD:QT-force-debug-info
2.同时生成release版本和debug版本,即生成QtCore.dll和QtCored.dll文件,可能不会形成QtCore.phb
配置调试和发布-opensource-confirm-license-platformwin32-msvc2010-opengldesktop-nomakeexamples-nomaketests-prefixD:QT
配置命令完成后,输入nmake命令,等待20分钟左右生效。 一些 CD 错误可能会被暴露。 我没有找到原因。 可能的问题是系统环境变量的问题,我配置后有时会报错。 可以通过nmakeclean命令清除之前的编译文件,以免影响新的编译,但是等待时间很长。 如果namke命令结束,输入namkeinstall命令,等待结束后就可以在指定路径找到生成的新编译的文件。 .dll 文件位于 bin 目录中。
按照上面的步骤就可以生成一个可以替换原工程的.dll文件了。 我们只需要在编译之前更改我们需要的源代码或者减少我们的功能代码,然后编译并替换dll文件即可。
一些可能的命令:
DumpoffieF:qt521ToolsQtCreatorbinqtcreator.exe 查询编译对象所需文件
dumpbin/headersD:QTbinQt5Core.dll|findstr
上面应该是cmd命令行输入,如果不是,尝试使用vs命令行。
编译过程中遇到的一些问题:
1、新编译的.dll文件大小与原工程中的.dll文件大小不同:
Qt编译生成的.dll文件大小的变化一般不会导致Qt无法打开或运行。 文件大小的变化主要是由于编译选项、编译器和添加的功能代码等激励因素。 此类诱因通常不会影响 Qt 的核心功能和运行时行为。
但是,如果在编译过程中出现其他错误或配置问题,则无论 .dll 文件大小如何,都可能导致 Qt 无法打开或运行。 此类问题可能与编译选项、库文件依赖、环境变量设置等有关。
不过,只要在编译步骤或编译过程中没有产生其他错误,生成的.dll文件是可以直接替换的。 如果发现替换.dll文件后原工程打不开qt源码编译方法,请先检查上面检查.dll文件位数的代码,可能会出现问题。
2.创建一个可以生成32位.dll的Vs命令行
(1) 打开资源管理器并导航到以下目录 C:ProgramFiles(x86)MicrosoftVisualStudio10.0Common7Tools
(2)在此目录下找到vsvars32.bat
(3)右键单击vsvars32.bat文件,选择“发送到”-“桌面(快捷方式)”
(4)右键单击桌面上创建的快捷方式方法,选择属性
(5) 在属性窗口中,将“Target”数组的内容更改为 %windir%SysWOW64cmd.exe /k "C:ProgramFiles(x86)MicrosoftVisualStudio10.0VCvcvarsall.bat" x86
至此,一个可以生成32位.dll的命令行就已经创建完成了。
使用时建议以管理员模式运行,防止权限问题导致失败。
3、VS2010的命令提示符无法切换到指定目录
1.确定是否需要跨c盘。 如果vs和qt在f等同一个c盘,可以直接cd到指定目录
2、如果跨越c盘,需要先cd到指定的c盘,比如vs在c,qt在f,然后先在命令行中cdf:
cd 到指定目录 F:qt521ToolsQtCreatorbin
如果你的vs安装在盘上,而qt源码安装在F盘上,则不能直接cd到F:qt521ToolsQtCreatorbin,会切换失败,必须按照上述步骤操作。