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.1\5.2.1\Src\qtbase,查找是否存在configure
Qt编译过程中,默认是动态编译,即不会生成.exe文件,如果只需要生成.dll则无需修改,若要静态编译.dll则需要进行下述修改
进入F:\qt5.2.1\5.2.1\Src\qtbase\mkspecs\win32-msvc2010修改qmake.conf文件
将
修改为
D为动态, T为静态
编译过程:
Qt5.2.1的configure.exe所在位置与其他版本不同,所以编译时应当切换至qtbase根目录下,负责执行configure编译时会报出指令不存在的错误。例(F:\qt521\5.2.1\Src\qtbase)。
编译时,应当使用32位即x86的Visual Studio x86 Win64 命令提示(2010),但是VS2010并不自带32位命令提示符,导致通过Visual Studio x64 Win64 命令提示(2010)编译出来的dll均为64位,替换dll时会导致程序无法打开。可以根据下述指令查询所生成dll的版本
dumpbin /headers D:\QT\bin\Qt5Core.dll | findstr 标红部分为所生成.ll的路径。
生成32位命令提示符的方法见下文——问题2
当确定所选择命令提示符符合自己所需要的位数后,继续使用configure指令进行编译:
1.只生成release版本,即QtCore.dll而不带QtCored.dll,同时最后一个指令为强制生产.phb文件
configure -release -opensource -confirm-license -platform win32-msvc2010 -opengl desktop -nomake examples -nomake tests -prefix D:\QT -force-debug-info
2.同时生成release版本和debug版本,即生成QtCore.dll和QtCored.dll文件,但是可能会不产生QtCore.phb
configure -debug-and-release -opensource -confirm-license -platform win32-msvc2010 -opengl desktop -nomake examples -nomake tests -prefix D:\QT
Configure指令结束后,输入nmake指令,等待约20min作用,可能会爆出一些cd错误,我咱是没有找到原因,可能存在的问题是系统环境变量的问题,但是我配置好后也时而报错,可以通过nmake clean指令清除之前的编译文件,以免会影响新的编译,但是等待时间很长。如果namke指令结束,输入namke install指令,等待结束后,即可在指定路径下找到生成的新编译好的文件。其中.dll文件位于bin目录下。
按照上述步骤,可以生成可替换至原项目的.dll文件,我们只需要在编译前,将自己所需要的源码进行修改或增加自己的功能代码,然后进行编译、替换对于dll文件即可。
部分可能用到的指令:
Dump of file F:\qt521\Tools\QtCreator\bin\qtcreator.exe查询所要编译对象所需要的文件
dumpbin /headers D:\QT\bin\Qt5Core.dll | findstr
上述应该是cmd命令行输入,如果不是就尝试使用vs命令行。
编译过程中遇到的一些问题:
1.新编译生成的.dll文件与原项目中的.dll文件大小不一样:
Qt编译生成的.dll文件大小的变化通常不会导致Qt打不开或无法运行。文件大小的变化主要是由于编译选项、编译器以及添加的功能代码等因素引起的。这些因素通常不会影响Qt的核心功能和运行时行为。
然而,如果你在编译过程中发生了其他错误或配置问题,可能会导致Qt打不开或无法运行,与.dll文件大小无关。这些问题可能与编译选项、库文件的依赖关系、环境变量设置等有关。
但是,只要编译步骤或编译过程中没有产生其他错误,生成的.dll文件是可以直接替换的。如果发现.dll文件替换后原项目打不开,优先按照上述查看.dll文件位数的代码查询,极有可能由此导致问题。
2.创建可生成32位.dll的Vs命令行
(1)打开资源管理器,并导航至以下目录C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools
(2)在该目录中找到vsvars32.bat
(3)右键vsvars32.bat文件,并选择“发送到”–“桌面(快捷方式)”
(4)右键桌面创建的快捷方式,选择属性
(5)在属性窗口中,将“目标”(Target)字段的内容修改为%windir%\SysWOW64\cmd.exe /k “C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat” x86
至此,就创建了一个,可以生成32位.dll的命令行。
在使用时,建议使用管理员模式运行,避免因权限问题导致失败。
3.针对VS2010命令提示符不能切换到指定目录
1.确定是否需要跨磁盘,若vs、qt在同一磁盘如f,则可以直接cd至指定目录
2.若跨磁盘,则需要,先cd到指定的磁盘下,例如vs在c,qt在f,则在命令行先cd f:
在 cd 到指定目录下F:\qt521\Tools\QtCreator\bin
如你的vs安装在c盘,qt源码安装在F盘,则不能直接cd至F:\qt521\Tools\QtCreator\bin,他会切换失败,必须按照上述步骤。