官方参考文档: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了,之所以没有写,主要还是工作上的事, ...
随机推荐
-
Django项目深入理解
python应用松耦合比方说,考虑有一个以前写的视图函数,这个函数显示当前日期和时间.如果我们想把它的URL 从原来的 /time/ 改变到/currenttime/ ,我们只需要快速的修改一下URL ...
-
MTD NANDFLASH驱动相关知识介绍
转:http://blog.csdn.net/zhouzhuan2008/article/details/11053877 目录 MTD总概述 MTD数据结构 MTD相关层实现 MTD,Memory ...
-
vijos p1071新年趣事之打牌
描述 过年的时候,大人们最喜欢的活动,就是打牌了.xiaomengxian不会打牌,只好坐在一边看着. 这天,正当一群人打牌打得起劲的时候,突然有人喊道:“这副牌少了几张!”众人一数,果然是少了.于是 ...
-
POJ 3094 Quicksum(简单的问题)
[简要题意]:题意是非常easy. 看样能理解 [分析]:略. 读取字符串. // 200K 0Ms #include<iostream> using namespace std; int ...
-
VIM快捷键(转)
VIM快捷键:光标移动:四个方向 kh 0 l j ctrl+f, ctrl+b 向下翻页,向上翻页 ctrl+d, ctrl+u ...
-
数据库采用多表连接查询,对应javaBean文件连接方式
在一个Web项目中,只要是存在数据库就一定会有JavaBean文件.一个JavaBean文件会对应一张数据库中的表,供dao中的代码来调用用来存取数据.我们都知道,在数据库设计的时候,如果A.B两张表 ...
-
Android POJO 转换器 —>; RapidOOO
博客搬迁至https://blog.wangjiegulu.com RSS订阅:https://blog.wangjiegulu.com/feed.xml 原文链接:https://blog.wang ...
-
最常用的JavaScript类的定义
混合的构造函数/原型方式 联合使用构造函数和原型方式,就可像用其他程序设计语言一样创建对象.这种概念非常简单,即用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法).结果是,所有函 ...
-
【vue】vue-router的用法
依赖安装:(c)npm install vue-router 过程: import Vue from 'vue'; import Router from 'vue-router'; Vue.use(R ...
-
python—命名规范
文件名全小写,可使用下划线 包应该是简短的.小写的名字.如果下划线可以改善可读性可以加入.如mypackage. 模块与包的规范同.如mymodule. 类总是使用首字母大写单词串.如MyClass. ...