一、源码包下载
QT源码下载地址:http://download.qt.io/official_releases/qt/
如下图:
选择需要的版本,比如我选择的是5.4/5.4.1/single/ ,如下:
选择其中一种,比如我选的是:qt_everywhere-opensource-src-5.4.1.zip
另外,参看QT官方文档:
《QT for Windows》 http://doc.qt.io/qt-5/windows-support.html
《QT for Windows-Requirements》 http://doc.qt.io/qt-5/windows-requirements.html
二、设置环境变量
在源码的解压路径下的“qtbase”目录下,有configure.exe,将该目录添加到系统环境变量中。
三、静态编译QT
1、如果使用的是VS2010编译环境,那么就打开源码解压路径下的:\qtbase\mkspecs\win32-msvc2010\qmake.conf文件,将下面三行:
QMAKE_CFLAGS_RELEASE = -02 -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MDd
改为:
QMAKE_CFLAGS_RELEASE = -02 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MTd
注:这里MD(动态) 、MT(静态)、MDD(动态调试)、MTD(静态调试)
2、设置参数以生成makefile文件
使用VS2010命令行工具,切换到源码路径下的qtbase目录下,输入以下命令:
可以使用“configure -platform win32-msvc2010 -opengl desktop -debug-and-release -static [-fast] -qt-sql-sqlite opengl desktop”,其中[ -fast]
在我的电脑上不能识别,所以被去掉了。使用“configure -platform win32-msvc2010 -debug-and-release -static -qt-sql-sqlite opengl desktop”
3、直接输入“nmake”命令,开始编译。
接下来是漫长的编译时间。。。
OK,编译成功。
------------------------------------------------------------------------------------------------------------------------------------
注:编译过程中遇到的问题:第一次设置配置参数(第2步)时指定的是:configure -platform win32-msvc2005 -debug-and-release -static -qt-sql-sqlite
结果编译时提示错误:“GLES2/gl2.h”:No such file or directory
后来查找原因,发现:
在Qt4时代,Qt既不使用 OpenGL, 也不用 DirectX。(当然,QGLWidget 这一部分东西除外。)
在Qt5时代,QtQuick2 使用的是OpenGL。这样一来,Windows下面的问题就出来了:Windows下的显卡驱动支持的是DirectX,默认带的OpenGL版本非常低,基本不能用。
要解决这个问题,有两种方式:
1. 确保你安装了支持OpenGL 2 或以上版本的显卡驱动。
2. 使用Angle将DirectX封装一下,模拟出一套OpenGL接口。
Qt编译有两种控制方式:
1、取决于是否使用什么层次的OpenGL API:这里有三个选择:-opengl desktop、-opengl es2和-no-opengl,将来还会增加-opengl es3;
2、如果选用OpenGL ES 2的API渲染的话,Qt也给出了三种方案:-no-angle,直接使用OpenGL的API进行渲染,需要显卡厂商支持OpenGL ES2.0,对应libGLESv2.dll、libEGL.dll;-angle,如果客户机器不支持OpenGL ES 2.0渲染,但是支持OpenGL 1.5,或者支持DirectX 9.0,那么可以使用-angle这个解决方案转换为DirectX的渲染API进行渲染,需要D3DCompiler_4(x).dll以及libGLESv2.dll、libEGL.dll;-angle-d3d11,如果客户机器支持DirectX 11(需要Windows 7以上,通常情况也支持OpenGL ES 2.0),想用最新的DirectX API进行渲染,那么可以使用这个方法进行编译。
因此,再次修改配置:configure -platform win32-msvc2005 -debug-and-release -static -qt-sql-sqlite -opengl desktop
编译成功。
参看:http://blog.csdn.net/ytfrdfiw/article/details/24310139