QT5,VS2012静态编译,所有的库准备充分的话qwebkit也可以静态编译通过,但是我编译的版本使用中如果用了QWEBVIEW控件在连接时会出错。

注:我自己编译的环境是:win server 2012 dc版 , vs2012 with update1,qt-everywhere-opensource-src-5.0.2,perl和rupy都是在qt官方给的地址下的最新的X64的,python是2.7 X64的、、、

本文主要针对qt 5.X版本,qt4.X的依赖没那么多,可以酌情参考下,但是好像用途不大、、
编译器主要针对VS2012,vs2010和mingw的就编译时参数换一个就行了,文中会有简单提起、、、
编译主要是静态编译,但是静态编译的话问题很多,我虽然不报错编译完成,但是使用没测试,已知的是我编译的版本qtwebkit使用时 QWEBVIEW控件在连接时会出错。如果您要是动态编译的话在编译依赖库(icu,openssl)时动态编译就行了,在configure时不要-static选项即可。

虽然我编译通过了,但是还是借鉴了网上很多教程,先发借鉴的链接,尊重版权:
http://www.ktao.net/archives/125  //这个编译好像只编译了qtbase,qtwebkit那块原来我准备的连接库不足,没成功,就没再测试。
http://www.cnblogs.com/wader/archive/2013/01/19/qt5_vc2012.html //这个是说动态连接的,但是很对。
http://qt-project.org/wiki/Building_Qt_5_from_Git  //官方的编译方法

1、准备编译需要的环境
  1.1准备编译器
      这个不需要多说了吧?就是安装vs或者mingw、、、
      vs系列可以去:http://msdn.itellyou.cn/ 下载,vs2012或者2010别用太低的版本,qt5要用c++11,只有这俩部分支持、、、
      mingw您可以用qt官方mingw版的,自带的版本,您也可以自己去下,用tdm-gcc安装方便点:http://tdm-gcc.tdragon.net/download,您也可以自己搜、、
   1.2准备其他需要的工具
    qt5还需要perl,pyhon,rupy、、
   Get Perl from: http://www.activestate.com/activeperl/downloads [activestate.com]
   Get Python from: http://www.python.org/download/releases/ [python.org] //有说需要用2.7版版本的。3.3的不行,我是用的2.7,没试试3.3的
   Get Ruby from: http://www.rubyinstaller.org/ [rubyinstaller.org]

2.准备源码
    这个我啥也不用说了吧、、、去官网下载,http://releases.qt-project.org/digia/ 这儿可以下载最新的、、、或者用git下载(这个我也不会用)、、、
  2.x配置源码:如果需要静态编译就需要了,动态编译请跳过:
    先说vs的:修改 源码目录\qtbase\mkspecs\win32-msvc*\qmake.conf   //win32-msvc*,*是您用的vs版本、、、
      找到这几句;
                      QMAKE_CFLAGS_WARN_OFF   = -W0
                       QMAKE_CFLAGS_RELEASE    = -O2 -MD
                     QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
                    QMAKE_CFLAGS_DEBUG      = -Zi -MDd
    把MD和MDT改成MT和MTD,如下: //因为md是动态连接运行时库,MT是把运行时库包含到程序里
                      QMAKE_CFLAGS_WARN_OFF   = -W0
                       QMAKE_CFLAGS_RELEASE    = -O2 -MT
                     QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
                    QMAKE_CFLAGS_DEBUG      = -Zi -MTd 
    再说mingw的: 修改 源码目录\qtbase\mkspecs\win32-g++\qmake.conf 
   把QMAKE_LFLAGS        =  和QMAKE_LFLAGS_DLL        = -shared 这两句改成:QMAKE_LFLAGS        = -static和QMAKE_LFLAGS_DLL        = -static

3、准备编译需要的库
     icu:这个qtwebkit必须的,qtbase也需要,但是没有的话可以自动跳过。
     地址ICU http://site.icu-project.org/download   下来源码,用您所用的编译器还要再编译成lib或者dll,注意静态链接动态链接。(注,vs2012下静态编译的lib下的lib不能用,要把icu开头的lib掐年都加上个s,保险起见希望加s和不加s都存在吧。)
   openssl: http://www.openssl.org/source/,注意这个编译debug版的不好编译,
  ANGLE-library :这个是把opengl转换连接到DirectX的,地址:http://code.google.com/p/angleproject/,资料不多,我也不会用,可以用 -opengl desktop选项就行了、、
  SQLITE: http://www.sqlite.org/download.html 我不知道需要的是sqlite.dll还是源码,还是sqllite.exe,所以我就把他们都房子一个目录里了。
注意:以上的您要注意debug和release版本、、还有动态编译和静态编译、、、

4、配置环境变量,建议用个bat
     附个我用的bat,上面两个链接也有bat脚本,您根据自己的位置自己修改吧,还有就是mingw的别往加上mingw的环境到bat:
这是我自己配置的32位的qt编译配置。
::配置路径
set QT5_DIR=E:\qt\qtsrc  //设置qt5的目录
set THIRDPARTY_DIR=E:\qt\Build  
::如果您用mingw可以在这儿设置下您的mingw目录
set PATH=%PATH%;D:\Perl64\site\bin;D:\Perl64\bin;D:\Python27;D:\Ruby\bin;  //用mingw就要加东西了
set PATH=%PATH%;%QT5_DIR%\bin;%QT5_DIR%\qtbase\bin;%QT5_DIR%\gnuwin32\bin;

::配置依赖,mingw的可能需要您手动加上库和头文件位置,vs的话您可以打开相应的VS* X86/64 本机命令提示符
set SQLITE3SRCDIR=%THIRDPARTY_DIR%\sqlite
set LIB=%LIB%;%THIRDPARTY_DIR%\icu\win32\lib;%THIRDPARTY_DIR%\icu\win32\libs;%THIRDPARTY_DIR%\openssl\openssl32\lib
set INCLUDE=%INCLUDE%;%THIRDPARTY_DIR%\icu\win32\include;%THIRDPARTY_DIR%\openssl\openssl32\include
set PATH=%PATH%;%THIRDPARTY_DIR%\icu\win32\bin;%THIRDPARTY_DIR%\openssl\openssl32\bin

::配置QT,为了在输入configure配置qt编译选项,我就直接写到bat了、、、
cd %QT5_DIR%
configure -prefix D:\QtSdk\Win32_static -opensource -confirm-license -static -platform win32-msvc2012 -release -c++11 -icu -openssl -opengl desktop -nomake demos -nomake examples -nomake tests-mp

解析下我用的选项:
-prefixD:\QtSdk\Win32_static 设置qt的安装目录,
  -opensource -confirm-license qt的使用协议,这个是使用开源协议,并同意
-static 设置静态编译,动态编译的话,去掉
-platform win32-msvc2012  设置编译起类型,您根据情况歌换成win32-g++或者其他、、
-release 只编译release版的,对应的-debug-and-release 编译debug和release的、、只编译debug的,我想您应该用不到吧、、
-c++11 开启C++11的支持,好像这个选项默认就启用了,gCC 4.7X支持大多数特性了,vs2012页支持很多,vs2010支持少部分、、
-icu -openssl 使用icu和openssl 
-opengl desktop 不准备ANGLE,就要加上这个选项,否则报错、、
-nomake demos -nomake examples -nomake tests 不编译示例,测试、、、
  -mp 使用多核优化编译、、

5、开始编译,然后安装
   nmake(vs系列用), mingw32-make.exe(mingw用)、、jom(如果您准备jom代替nmake的话)
  等吧、、漫长的等待、、然后安装 在您前面的命令,例如 namke,安装就是namke install
注意:安装好后,您还要拷贝几个icu的dll进您的安装的qt里、、
静态编译的qt,需要把icu\bin(64)里的icudt*.dll和icuuc*.dll复制到qt的bin里去、、
静态编译的话还需要把ICU\BIN(64)里的部分lib复制到qt的bin里面去,动态的话应该也需要,但是具体的还要您试下、、
我编译的需要sicuuc.lib,sicuin.dll,sicudt.lib. //您要是感觉麻烦,全部都复制进去、、sicu*.lib前面的lib是自己加的、、、

mingw的编译方法,您也可以看下前面几位前辈的帖子:
链接:
http://www.qtcn.org/bbs/read-htm-tid-52265-fpage-2.html
http://www.qtcn.org/bbs/read-htm-tid-52231-fpage-2.html

另外conf文件中,-O2改成-O1可以精简不少体积,configure的时候传递-ltcg也可以精简库的体积
但是ltcg这个参数用在webkit上会严重报错,因为编译过程中产生的lib的体积已经超出了2G……不过据说可以通过修改webkit的pro来解决

conf文件中,-O2改成-O1按官网上网友的反映是必须的,vs2012 update1及update2都没有改正这个错误(64位对齐),也就是说编译64位VS2012应该没问题(我没试过),编译32位的必须放弃优化速度(包括有一个网友提供的bug fix 也不行 https://bugs.webkit.org/show_bug.cgi?id=90008,(没办法粘贴网址,手工输入的但id=90008核对过))。
编译出来的Qt assistant及designer都不能使用(它们都用到了 webkti),QT有时真操心。
PS:
同一台机器:vs2012编译需要2个小时(差几分)而用vs2010编译只需要58分钟,差的太离谱了吧????
机器配置(i7 3610M, 8G,64位windows7, 镁光M4 128G系统(没在这个盘上编译,在笔记本本机的硬盘,好像是7200转的,外星人m17x r4 7970M显卡)。
最终于放弃vs2012,
原因1:支持xp太难。
原因2:编译32位问题太多。

http://www.qtcn.org/bbs/read-htm-tid-53236-ds-1.html#tpc

QT5静态编译教程,主要针对vs2012(渡世白玉)的更多相关文章

  1. QT5静态编译工程(arm交叉编译)

    1.首先,QT编译环境默认是动态库,要编译静态程序是不可能的,所以要下载QT源码,重新编译QT编译环境 2.下载QT源码(5.13版本):http://download.qt.io/developme ...

  2. VS2015静态编译libcurl(C++ curl封装类)

    一.最新libcurl静态编译教程(curl-7.51版/curl-7.52版) 1.安装perl,在官网下载,安装好以后,测试perl -v是否成功 2.编译openssl(已编译好的下载地址) p ...

  3. vs2010静态编译qt5.1.0

    本博文参考 http://blog.chinaunix.net/uid-20690340-id-3802197.html 静态库在链接的时候直接写入二进制文件里,这样的好处在于发布的时候无需附带dll ...

  4. 静态编译Qt5.4.1和Qt WebKit

    图灵社区文章地址:http://www.ituring.com.cn/article/195148WebKit是个好东西,做爬虫.显示网页还是想用HTML来做桌面应用的界面都可以用他,不过一直以来都觉 ...

  5. 静态编译Qt5.4.1和Qt WebKit(网事如风的blog)good

    blog文章地址:http://godebug.org/index.php/archives/133/ WebKit是个好东西,做爬虫.显示网页还是想用HTML来做桌面应用的界面都可以用他,不过一直以 ...

  6. windows下使用mingw和msvc静态编译Qt5.15.xx

    windows下使用mingw和msvc静态编译Qt5.15.xx 下载并安装相关依赖软件 Python version 2.7 https://www.python.org/downloads/ ( ...

  7. Qt5.4静态编译方法

    静态编译,就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so或.lib)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库.这样就可以发布单 ...

  8. QT5.4 vs2013静态加载插件的sqlite静态编译

    1. 非常多同学在静态编译QT5完毕后, sqlite的驱动老是载入不进去, 原因可能是由于你没有例如以下操作: #include <QtPlugin> Q_IMPORT_PLUGIN(Q ...

  9. Qt5.10.1 在windows下vs2017静态编译

    1.在计算机上安装python库和perl库(因为后续的静态编译需要用到这两种语言),可以在命令行敲击“python”和“perl -v”检查是否安装成功. 2.修改msvc-desktop.conf ...

随机推荐

  1. 使用ffmpeg将BMP图片编码为x264视频文件,将H264视频保存为BMP图片,yuv视频文件保存为图片的代码

    ffmpeg开源库,实现将bmp格式的图片编码成x264文件,并将编码好的H264文件解码保存为BMP文件. 实现将视频文件yuv格式保存的图片格式的測试,图像格式png,jpg, gif等等測试均O ...

  2. 修改Hadoop作业调度算法过程解析

    最近几个星期一直在修改hadoop的计算能力调度算法,遇到了这样那样的问题. 我修改的版本是hadoop-0.20.2 第一步: 将hadoop的源码加载到eclipse中配置使用ant编译 第二步: ...

  3. 【C# -- OpenCV】Emgu CV 第一个实例

    原文 [C# -- OpenCV]Emgu CV 第一个实例 Emgu CV下载地址 http://sourceforge.net/projects/emgucv/files/ 找最新的下就行了,傻瓜 ...

  4. Spring源码解析——如何阅读源码(转)

    最近没什么实质性的工作,正好有点时间,就想学学别人的代码.也看过一点源码,算是有了点阅读的经验,于是下定决心看下spring这种大型的项目的源码,学学它的设计思想. 手码不易,转载请注明:xingoo ...

  5. 基于visual Studio2013解决C语言竞赛题之0705矩阵转置

     题目 解决代码及点评 /* 5. 写一函数,将一个3×3的矩阵转置. */ #include <stdio.h> #include <stdlib.h> void mai ...

  6. Deamon Thread 讲解

    The daemon thread's life cycle is same with the life cycle of the application which starts this daem ...

  7. jQuery 查询 xml

    加载xml:(注:这个方法在Chrome是用不了的,Chrome是禁止访问本地的xml文件,在ie11里面用不了,ie11的xmlDom文档没有load方法) function loadXML(fil ...

  8. 搭建Windows SVN服务器及TortoiseSVN使用帮助和下载

    搭建Windows SVN服务器: 用的SVN服务器通常为外部,例如Google Code的服务器,不过,做为一个程序开发人员,就算自己一个人写程序,也应该有一个SVN版本控制系统,以便对开发代码进行 ...

  9. Google - Pagerank

    词条权值的局限. 上一篇blog以信息和概率的角度探讨了词条对于文档的权值. 见blog:http://blog.csdn.net/ice110956/article/details/17243071 ...

  10. c++中一个类所占用的空间

    看到阿里的一道笔试题: #pragma pack(2) class A { int i; union U { char buff[13]; int i; }u; void foo() { } type ...