要想实现标题的目的,qt5.7及其之后的版本——别试了。网上有5.7的方法,可是5.7不是LTS(长期技术支持版)啊。
5.6到2017年底还在出改进版5.6.3,而5.7就销声匿迹了啊。
我尝试5.9这个同5.6一样的长期版,静态编译倒是可以,放xp里运行不了了。qt自己也说5.7之后就不支持xp了。
【我是win10x64的虚拟机】
1.去QT官网或者镜像网站下载everything。比如说北京理工的http://mirror.bit.edu.cn/qtproject/official_releases/qt/5.6/5.6.3/single/
2.装python2.7.* 我装的是当时官网的2.7.13
3.装ruby 我装的是ruby 1.9.2p0 (2010-08-18) [i386-mingw32]
4.装perl 我装的是http://www.perl.org/上的5.24.3
上述软件安装时会有英文提示问你是否加入环境变量等等,注意观察。勾选加入!
装VS2015 update3 切记是update3!很大的一个安装包,7G多的一个ISO。(VS2017貌似就不理睬x86了,专心x64了。)
还要装一个windows software development Kit的东西,这是一个全家桶,不必都装,光装里面那个什么SDK就行。
5.6.3静态编译方法 |
1.建个QtStatic目录,其下再建立三个子目录BuildScript、src、vs2015static
(BuildScript用来存放安装脚本和编译中间文件;src用来存everything解压出来的源码;另一个目录就是存最终成果了。mingw编译器神慢,在win下还是用ms的vs自带的编译器cl吧。)
2.在BuildScript目录下建立qt-build.bat文件,内容如下:
REM ********** Initialize env for msvc 2015 cl compiler ********** SET PATH=C:\Windows;C:\Windows\system32 REM Set up \Microsoft Visual Studio 2015, where <arch> is amd64, x86, etc. CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 REM ********** Update include & lib to support xp win sdk 7.1A ********** SET PATH="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin";%PATH% SET INCLUDE="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include";%INCLUDE% SET LIB="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib";%LIB% SET CL=/D_USING_V110_SDK71_;%CL% REM ********** 3rd party build tools binaries: ruby, perl, python ********** SET PATH=C:\Perl64\bin;C:\Perl64\site\bin;C:\Python27\;C:\Python27\Scripts;C:\Ruby192\bin;%PATH% REM ********** Set up qt source env ********** SET _ROOT=C:\QtStatic\Qt5.6.3\src SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH% REM Uncomment the below line when using a git checkout of the source repository REM SET PATH=%_ROOT%\qtrepotools\bin;%PATH% SET QMAKESPEC=win32-msvc2015 SET _ROOT= REM Generate makefile ../src/configure.bat -confirm-license -opensource -platform win32-msvc2015 -release -static -target xp -prefix C:\QtStatic\Qt5.6.3\vs2015static -qt-sql-sqlite -qt-sql-odbc -plugin-sql-sqlite -plugin-sql-odbc -plugin-sql-oci -plugin-sql-mysql -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -no-qml-debug -no-angle -nomake tests -nomake examples -skip qtquickcontrols -skip qtquickcontrols2 -skip qtsensors -skip qtdoc -no-directwrite -mp
上文中涉及路径的你仔细调整,设置成你自己机器的真实情况。我需要连接oracle和mysql数据库,你视情况自行增删最后一段相关开关。最后一段这里,qt5.6和5.9关于数据库这块很是不同,其他细节也有差异。
3.修改C:\QtStatic\Qt5.6.3\src\qtbase\mkspecs\common\msvc-desktop.conf如下:
# # qmake configuration for Microsoft Visual Studio C/C++ Compiler # This mkspec is used for all win32-msvcXXXX specs # isEmpty(MSC_VER)|isEmpty(MSVC_VER): error("Source mkspec must set both MSC_VER and MSVC_VER.") # # Baseline: Visual Studio 2005 (8.0), VC++ 14.0 # include(angle.conf) MAKEFILE_GENERATOR = MSVC.NET QMAKE_PLATFORM = win32 QMAKE_COMPILER = msvc CONFIG += incremental flat precompile_header autogen_precompile_source debug_and_release debug_and_release_target embed_manifest_dll embed_manifest_exe DEFINES += UNICODE WIN32 QMAKE_COMPILER_DEFINES += _MSC_VER=$$