QT源码编译

一、源码包下载

QT源码下载地址:http://download.qt.io/official_releases/qt/

如下图:

QT源码编译_第1张图片

选择需要的版本,比如我选择的是5.4/5.4.1/single/ ,如下:

QT源码编译_第2张图片

选择其中一种,比如我选的是: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

你可能感兴趣的:(Win)