Windows下使用VS2013编译Qt5.6源码

下载Qt开源源码

http://download.qt.io/archive/qt/
我下载的是:qt-everywhere-opensource-src-5.6.1-1.zip

确保下面工具被安装

ICU源码编译,编译QtWebKit必须的

  • ICU源码下载:http://site.icu-project.org/
  • 解压后进入source->allinone
  • 用vs2013打开allinone.sln分别编译debug和release会自动生成include、lib、bin目录,等会编译Qt源码之前需要将它们增加到环境变量。

编译前需要注意的

  • Qt源码目录要简短,防止文件路径太长造成的编译错误。最好是将qt-everywhere-opensource-src-5.6.1-1改为src之类简短的名字
  • 目录尽量用英文名
  • 当编译QtWebKit的时候还需要修改系统的区域和语言,否则编译不过。你也可以先不设置(因为设置之后编译工具编译过程中的中文显示不出来),等出现问题的时候再设置重启电脑后,不需要再进行configure,使用nmake继续之前的编译

    打开控制面板->区域和语言->管理->更改系统区域设置->英语(美国)

  • 使用管理员权限打开VS2013 开发人员命令提示工具
  • 在上面工具中,设置ICU生成的目录到环境变量

    SET INCLUDE=F:\qt\icu\include;%INCLUDE%
    SET LIB=F:\qt\icu\lib;%LIB%
    SET PATH=F:\qt\icu\lib;%PATH%
    SET PATH=F:\qt\icu\bin;%PATH%

  • cd到Qt源码目录(qt.pro这个目录)
  • configure -prefix ./qtbase -opengl desktop -force-debug-info -nomake tests

    -opengl desktop可以支持XP系统 -force-debug-info是为了生成release下的pdb文件,对于调试release下的dump很有用

  • nmake

    使用nmake命令开始编译

  • nmake install

    编译完成后使用nmake install进行安装,安装后的所有文件都在qtbase目录下的bin/qtbase中

我编译中遇到的问题

  • NMAKE:fatal error U1077 ninja.exe返回代码0x1 NMAKE:fatal error U1077 nmake 返回代码0x2,编译qtwebengine的时候出错,修改上面提到的区域和语言,重启电脑后继续nmake就可以了
  • 在编译examples\webenginewidgets\simplebrowser\webview.cpp的时候提示QDebug错误

    解决方法:打开源码增加如下头文件,接着使用nmake继续编译
    #include <QDebug>

  • 如果要重新进行configure,最好是解压一份新的qt-everywhere-opensource-src-5.6.1-1在新目录中进行
  • 因为编译要很久,如果人不在电脑旁的话更改电源选项不要让电脑进入睡眠状态
  • 在使用windeployqt.exe的时候提示“Unable to read qconfig.pri”,在bin中增加qt.conf文件,内容如下:
    [Paths]
    Prefix=..
    
  • 为了兼容XP可能还需要:

    增加opengl32sw.dll,platforms插件中使用官方发布的对应版本替换qwindows.dll