博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT5静态编译教程,主要针对vs2012
阅读量:4108 次
发布时间:2019-05-25

本文共 4037 字,大约阅读时间需要 13 分钟。

QT5静态编译教程,主要针对vs2012

转自
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选项即可。



虽然我编译通过了,但是还是借鉴了网上很多教程,先发借鉴的链接,尊重版权:

  //这个编译好像只编译了qtbase,qtwebkit那块原来我准备的连接库不足,没成功,就没再测试。

 //这个是说动态连接的,但是很对。

  //官方的编译方法



1、准备编译需要的环境

  1.1准备编译器

      这个不需要多说了吧?就是安装vs或者mingw、、、

      vs系列可以去:
 下载,vs2012或者2010别用太低的版本,qt5要用c++11,只有这俩部分支持、、、

      mingw您可以用qt官方mingw版的,自带的版本,您也可以自己去下,用tdm-gcc安装方便点:
,您也可以自己搜、、

   
1.2准备其他需要的工具

    qt5还需要perl,pyhon,rupy、、

   Get Perl from: 
 [activestate.com]

   Get Python from: 
 [python.org] //有说需要用2.7版版本的。3.3的不行,我是用的2.7,没试试3.3的

   Get Ruby from: 
 [rubyinstaller.org]



2.准备源码

    这个我啥也不用说了吧、、、去官网下载,
 这儿可以下载最新的、、、或者用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 
   下来源码,用您所用的编译器还要再编译成lib或者dll,注意静态链接动态链接。(注,vs2012下静态编译的lib下的lib不能用,要把icu开头的lib掐年都加上个s,保险起见希望加s和不加s都存在吧。)

   openssl: 
,注意这个编译debug版的不好编译,

  ANGLE-library :这个是把opengl转换连接到DirectX的,地址:
,资料不多,我也不会用,可以用 -opengl desktop选项就行了、、

  SQLITE: 
 我不知道需要的是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的编译方法,您也可以看下前面几位前辈的帖子:

链接:


附上我静态编译的icu和openssl、、VS2012 with update1 编译的、、

64位的只有release版的、、

32位的有release和debug的,在同一目录下,区别是debug的名字都比release多了个d

还有我用的bat、、、

转载地址:http://juvsi.baihongyu.com/

你可能感兴趣的文章
用div+css做下拉菜单,当鼠标移向2级菜单时,为什么1级菜单的a:hover背景色就不管用了?
查看>>
idea 有时提示找不到类或者符号
查看>>
ng-class的几种用法
查看>>
node入门demo-Ajax让前端angularjs/jquery与后台node.js交互,技术支持:mysql+html+angularjs/jquery
查看>>
神经网络--单层感知器
查看>>
注册表修改DOS的编码页为utf-8
查看>>
matplotlib.pyplot.plot()参数详解
查看>>
拉格朗日对偶问题详解
查看>>
MFC矩阵运算
查看>>
最小二乘法拟合:原理,python源码,C++源码
查看>>
ubuntu 安装mysql
查看>>
c# 计算器
查看>>
C# 简单的矩阵运算
查看>>
gcc 常用选项详解
查看>>
c++输入文件流ifstream用法详解
查看>>
c++输出文件流ofstream用法详解
查看>>
字符编码:ASCII,Unicode 和 UTF-8
查看>>
firewalld的基本使用
查看>>
Linux下SVN客户端使用教程
查看>>
i2c-tools
查看>>