Win7下静态编译QT5.12源码
官方参考文档:https://doc.qt.io/qt-5/build-sources.html
CSDN博客:https://blog.csdn.net/GG_SiMiDa/article/details/78517246
博客园博客:https://www.cnblogs.com/BuildingIT/archive/2013/03/22/2976480.html
安装QT有两种方式:
- 通过QT安装包(Windows下exe文件)
- 通过QT源码
下文主要描述QT源码的编译方法,QT版本为5.12
下载源码:http://download.qt.io/archive/qt/5.12/5.12.0/single/
PS:我下载时遇到的一个插曲,直接在浏览器中点击红线处下载的zip文件解压不了,提示损坏了,最后右键菜单"复制链接地址"使用迅雷精简版下载后可以正常解压使用!
Windows平台相关支持需要:
我解压到F:\qt-everywhere-src-5.12.0,可以看到里面有configure文件,在此处使用 configure -h 可以看到可配置的参数,太多了这里只列举几个比较常设置的:
-release Compile and link Qt with debugging turned off.
-debug Compile and link Qt with debugging turned on.
-debug-and-release Build two versions of Qt.
-shared Build shared Qt libraries [yes] (no for UIKit)
-static Build static Qt libraries [no] (yes for UIKit)
-nomake tests Disable building of tests to speed up compilation
-nomake examples Disable building of examples to speed up compilation
-confirm-license Automatically acknowledge the LGPL 2.1 license.
-no-opengl Disable OpenGL support
-opengl <api> Enable OpenGL support.Support APIs:
es2 <default on Windows>
desktop <default on Unix>
dynamic <Windows only>
-opengles3 Enable OpenGL ES3.x support instead of ES2.x [auto]
Windows编译需要准备如下工具:
Python 2.7及以上版本(如果编译WebKit >=2.6.x):下载地址https://www.python.org/downloads/
Perl 5.12 以上版本(必须安装且版本>=5.14):下载地址https://www.activestate.com/activeperl/downloads
支持C++11的编译器,MSVC2012以上版本或者MinGW4.9以上版本
Qt编译有两种控制方式:
1、取决于是否使用什么层次的OpenGL API:这里有三个选择:-opengl desktop、-opengl es2和-no-opengl,将来还会增加-opengl es3;
2、如果选用OpenGL ES 2的API渲染的话,Qt也给出了三种方案:-no-angle,直接使用OpenGL的API进行渲染,需要显卡厂商支持OpenGL ES 2.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进行渲染,那么可以使用这个方法进行编译。
以编译静态库为例
Windows:
msvc版
configure -confirm-license -opensource -platform win32-msvc -debug-and-release -static -static-runtime -force-debug-info -opengl dynamic -prefix "./build" -qt-sqlite -qt-pcre -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -nomake tests -no-compile-examples -nomake examples
mingw版
configure -confirm-license -opensource -platform win32-g++ -debug-and-release -static -static-runtime -force-debug-info -opengl dynamic -prefix "./build" -qt-sqlite -qt-pcre -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -nomake tests -no-compile-examples -nomake examples
Linux:
./configure -confirm-license -opensource -debug-and-release -static -static-runtime -force-debug-info -opengl dynamic
[我的配置-mingw版]
configure -prefix "./build" -release -opensource –static -static-runtime -force-debug-info -opengl dynamic -opengl desktop -platform win32-g++ -c++std c++11 -skip qtwebengine -nomake examples -nomake tests -mp -confirm-license
配置完成后会生成Makefile文件
[nmake/mingw32-make/make]
使用对应平台下的编译工具(nmake是MSVC的make,mingw32-make是g++的Windows版本的make,make是Linux中的make),如果没有请安装好,此过程比较长,大概一个小时以上,漫长的等待中……
[nmake/mingw32-make/make] install
安装成功后,应该可以在./build目录下看到如下文件夹:
如果是静态编译,在lib中可以看到.a库,动态的则是.dll或者.so库
在bin目录下,qt助手、qt设计师、qt翻译家等也都编译出来了~
但是没有qt creater,这需要单独下载qt creater的源码单独编译!
QT静态库的使用:
打开QT Creater,运行qt自带的例子boxes,使用默认的MinGW配置编译会编译不过,提示错误: This example requires Qt to be configured with -opengl desktop
原因是默认的Windows版本的QT使用的编译选项是-opengl dynamic,而boxes例子中使用了原生的opengl绘图,需要-opengl desktop才能使用。我们上述编译的qt静态库特意配置了-opengl desktop选项。
"工具"->"选项"->"Kits":
添加Qt Versions,将我们上述编译的qt静态库build目录中的qmake添加:
配置构建套件(Kit),手动设置"桌面"配置如下:
打开boxes工程,配置"桌面"编译选项,执行build操作
等待大约2分钟左右,boxes例程终于可以成功编译了~
运行吧!
Win7下静态编译QT5.12源码的更多相关文章
- msvc2013编译qt5.6源码
1.回顾 说起到qt的编译,真是领人痛心啊,不仅编译选项繁多,而且编译时间比较久,总是能使想编译qt源码的人望而却步,呵呵...我就是其中一个,不知道从什么时候开始就想着把qt的源码编译一下,也尝试过 ...
- MAC 下编译 ANDROID P 源码 提示 internal error: Could not find a supported mac sdk: ["10.10" "10.11" "10.12" "10.13"]
MAC 下编译 ANDROID P 源码出现下面的问题: ninja: no work to do. [21/21] out/soong/.bootstrap/bin/soong_build out/ ...
- windows下使用mingw和msvc静态编译Qt5.15.xx
windows下使用mingw和msvc静态编译Qt5.15.xx 下载并安装相关依赖软件 Python version 2.7 https://www.python.org/downloads/ ( ...
- Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程
Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程 在新的Ubuntu 64位系统下去编译早期的安卓源码是会出现很多问题的,因为64位系统在安装完成后,很多32位的兼容 ...
- win7 安装用mingw编译的Qt源码并连接postgresql
下载Qt 1.下载qt-creator-windows-opensource-2.8.0,下载路径:http://download.qt.io/official_releases/qtcreator/ ...
- Win7下VS2008编译QtiPlot
Win7下VS2008编译QtiPlot By wangsh 2011-11-25 QtiPlot 是一款开源免费的科学绘图软件,可运行在多个平台(windows.Linux等)中,从功能上讲,Qti ...
- Ubuntu 下载 & 编译 Android5.1 源码
ustc & tsinghua android srchttps://lug.ustc.edu.cn/wiki/mirrors/help/aosphttps://mirrors.tuna.ts ...
- 编译android5.0源码的
java环境 Android 5.1 用到的jdk不再是Oracle 的 jdk ,而是开源的 openjdk,在ubuntu安装好后,使用如下命令安装jdk: $sudo apt-get insta ...
- 【转】编译Android系统源码和内核源码
原文网址:http://blog.csdn.net/jiangwei0910410003/article/details/37988637 好长时间没有写blog了,之所以没有写,主要还是工作上的事, ...
随机推荐
- [Linux实用工具]Linux监控工具munin的展示(Nginx)
Munin的安装和配置可以参考第一篇文章: [Linux实用工具]Linux监控工具munin的安装和配置 http://www.cnblogs.com/rond/p/3757804.html Mun ...
- iOS five years[转]
原文链接:http://blog.ayaka.me/post/127980091987/5-years This morning, I got a push notification from Tim ...
- SQLSERVER SQL备份还原代码C#
public class BakDBHelper { /// <summary> /// 创建数据库备份 /// </summary> public string Create ...
- linq操作符:元素操作符
元素操作符仅返回一个元素. 一.Fitst操作符 First操作符将返回序列中的第一个元素.如果序列中不包含任何元素,则First<T>方法将引发异常.来看看First()方法的定义: 从 ...
- 微信小程序——自定义导航栏
微信头部导航栏可能通过json配置: 但是有时候我们项目需求可能需要自定义头部导航栏,如下图所示: 现在具体说一下实现步骤及方法: 步骤: 1.在 app.json 里面把 "navigat ...
- linux 解压压缩大全
eoiioe linux下解压命令大全 .tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)——— ...
- PHP zhuaq
change_html_img_src.php <?php $url=$_GET['url']; $id=$_GET['id']; $type=$_GET['type']; $redis_key ...
- Java设计模式(22)命令模式(Command模式)
Command模式是最让我疑惑的一个模式,我在阅读了很多代码后,才感觉隐约掌握其大概原理,我认为理解设计模式最主要是掌握起原理构造,这样才对自己实际编程有指导作用.Command模式实际上不是个很具体 ...
- paoding分词
Paoding 详细介绍 庖丁中文分词库是一个使用Java开发的,可结合到Lucene应用中的,为互联网.企业内部网使用的中文搜索引擎分词组件.Paoding填补了国内中文分词方面开源组件的空白,致力 ...
- Android 8 wifi blakclist
在连接wifi的时候,认证或者关联失败,有时会加入黑名单中.记录wpa_supplicant中blacklist的原理. 分析可以看到,如果是机器自己断开,是不会把AP加入黑名单的,只有AP侧出了问题 ...