Qt 5.15.0编译指南_qt 5.15 编译-程序员宅基地

技术标签: c++  qt  一点一滴  

从Qt5.15.0起,对于开源用户,Qt官方不再提供独立安装文件,且不再有bug修复版本(比如Qt5.15.1)

如果想体验Qt5.15及之后的版本,就要培养一个新技能——编译Qt源码

从编译到发布大概需要这么几个步骤:

1. 从Qt官网下载源码;

2. 编译源码;

3. 将编译后的qmake.exe导入QtCreator或者Visual Studio;

4. 使用QtCreator或者Visual Studio编译Qt项目;

5. 项目发布可仍然使用windeployqt.exe。

下面记录一下本人折腾Qt5.15的历程(本人以前伸手党,直接用的离线安装包,快哉)

1. 下载并解压源码

网址:http://download.qt.io/archive/qt/5.15/5.15.0/single/qt-everywhere-src-5.15.0.zip

下载后解压即可,为了节省后面折腾的时间,我建议你解压到 "d:\qtsrc"这个目录。简单说一下,放在哪个盘是你自己决定的,需要保证这个盘有100GB+的剩余空间就行。为什么我起了qtsrc这个目录呢,因为默认的文件夹名字“qt-everywhere-src-5.15.0”名字太长,在windows下编译时,可能编译了几个小时后出现奇怪的错误,因为它调用的脚本处理不了太长的路径。

2. 编译环境

在讨论编译之前,我先把我的编译环境说一下,因为,这非常重要。各种奇奇怪怪的问题都可能是由于编译环境的设定引入的。

操作系统 Windows 10, build 18362.836 (窃以为操作系统升级到最新的总是没错的)

Visual Studio 2019, version 16.6.1(也是比较新版的)

Windows SDK Version, 10.0.19041.0 (在编译Qt时,有提示,Win SDK Version要大于XXX版, 当时版本较低,所以去官网下了个新版)

操作系统语言: 英语(奉劝直接改为英语,如果是中文的话,编译几个小时后报错,岂不是很崩溃,这种崩溃我已经体验很多次了。原因是qt源码中颇有些文件的编码是默认的,也就是随着操作系统语言变的,可能存在解析错误)

Visual Studio语言:英语(这里又重复提了一下Visual Studio的语言,因为它也很重要,别问我怎么知道的,把它的语言设置成英语,如果没有选项可以修改语言的话,就用Visual Studio Installer去装个语言包,然后再设置为英语)

3. 编译源码

看了上面的编译环境,应该已经猜到了。我就是用VS2019进行编译的。具体来讲,是VS2019-32bit-nmake方式。

首先,看一下这篇文章https://doc-snapshots.qt.io/qt5-5.15/windows-building.html

直接从它里面的step3开始吧,新建一个qt5vars.cmd文件,把它黑框框里的内容粘进去,路径改成你的路径。

打开Vs2019安装目录下的x86 Native Tools Command Prompt for VS 2019

输入 cmd.exe /E:ON /V:ON /k C:\Qt\qt5vars.cmd

然后切换到d:\qtsrc这个目录

输入 configure -debug -nomake examples -nomake tests -skip qtwebengine -opensource

注意啊,上面 -debug是只编译debug版本,换成-release是只编译release版本

我是先编译的debug版本,后编译的release版本,应该也是可以一起编的,好像是-debug-and-release,我没有试过,因为不放心。

configure之后

输入 nmake

进入漫长的等待(几个小时吧,看你的电脑性能)。

如果编译结束且没有报错

输入 nmake install

进入短暂而开心的等待(几分钟吧)

3.1 编译QtWebengine

你看刚才输入的configure,里面有个-skip qtwebengine,是的,如其名,把QtWebengine模块给跳过去了,为什么跳过去呢,因为编译它实在是太复杂了,它的代码量堪比其他所有模块的代码量之和。编译时长也比其他所有模块编译的总时长还要长。

而且,它只支持64位,所以为了兼容32位,我们要换个工具,VS2019安装目录下的x64_x86 Cross Tools Command Prompt for VS 2019。

打开这个x64_x86工具,我建议你再做几个准备工作:

1)把QtWebengine源码拷贝到根目录,比如D:\Qt\qtwebengine

2)新建一个文件夹,比如D:\Qt\bwe (寓意BuildWebEngine),当然啦,这个盘也要有100GB+的剩余空间

然后就开始吧:

在x64_x86控制台下

输入 cd d:\Qt\bwe

输入 C:\Qt\Qt-5.15.0\bin\qmake.exe d:\Qt\qtwebengine (可以直接用刚才编好的5.15的qmake呦)

输入 nmake (然后等着吧,几个小时)

如果没有报错,就可以愉快的

输入 nmake install

有一点我不确定,就是在上面输入C:\Qt\Qt-5.15.0\bin\qmake.exe d:\Qt\qtwebengine时,是否会把debug和release版本都编了。因为我在编译QtWebengine时还没有编译Qt的release版,所以编译出的QtWebengine也只有debug版。之后我又用C:\Qt\Qt-5.15.0\bin\qmake.exe -release d:\Qt\qtwebengine编译了QtWebengine的release版,才算补充完整。

4. Qt Creator和VS2019导入qmake

编译完Qt,就差最后一步了——如何在你的IDE中使用Qt5.15

Qt Creator就直接在“选项”中添加新的构建套件即可,VS2019(当然你首先要安装好QtTools For VS2019的插件)中也就直接在QtTools中选择qmake所在的路径即可(注意只需选到bin的上一级,它会在你给的路径后增加\bin\qmake.exe来搜索)

5. 编译后项目发布

以前一直都用windeployqt,现在这个exe仍在在Qt-5.15.0\bin中,直接按以前的方式使用即可

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zxjohnson/article/details/106621457

智能推荐

【Python】爬虫+动态Cookie获取_python爬虫cookie实时性-程序员宅基地

文章浏览阅读1.1w次,点赞12次,收藏49次。一、前言背景是帮助朋友爬取一个国家网站发布的肺炎疫情统计信息。二、遇到的问题朋友本来是打算按照最基本的方法进行爬取,代码如下:import requestsimport reURL = "xxxxxx"r = requests.get(URL)#print(r)但这样收到服务器的回复是HTTP 412,没有获得正常的回应。这就非常奇怪了,请求的页面看起来也是静态页面..._python爬虫cookie实时性

[从头学数学] 第233节 定积分的应用_从头学定积分-程序员宅基地

文章浏览阅读610次。剧情提要:[机器小伟]在[工程师阿伟]的陪同下进入了元婴期的修炼。这次要修炼的是数学分析(或称高等数学、或称微积分)。正剧开始:星历2016年06月02日 08:57:28, 银河系厄尔斯星球中华帝国江南行省。[工程师阿伟]正在和[机器小伟]一起研究[定积分的应用]。_从头学定积分

apollo源码启动服务,apollo源码分析_apollo2.3 源码启动-程序员宅基地

文章浏览阅读685次。apollo源码启动服务_apollo2.3 源码启动

mysql 转decimal,在MySql中将VARCHAR转换为DECIMAL值-程序员宅基地

文章浏览阅读1.3k次。I have imported a CSV file that contains string values (eg.eating) and floating values (eg. 0.87) into a table in my phpMyAdmin database. After I get ride of all the string values and retain only the ..._mysql decimal转换varchar

python功能模块之psutil_详解Python3.6安装psutil模块和功能简介-程序员宅基地

文章浏览阅读441次。详解Python3.6安装psutil模块和功能简介来源:中文源码网浏览: 次日期:2018年9月2日【下载文档:详解Python3.6安装psutil模块和功能简介.txt】(友情提示:右键点上行txt文档名->目标另存为)详解Python3.6安装psutil模块和功能简介 一、psutil模块1. psutil是一个跨平台库,能够轻松实现获取..._python3.6 -m test.test_utils_push解释

java处理json数组_用Java处理数组-程序员宅基地

文章浏览阅读1.8k次。java8处理数组If a program needs to work with a number of values of the same data type, you could declare a variable for each number. For example, a program that displays lottery numbers: 如果程序需要使用多个相同数据..._json数组 java

随便推点

Linux Shell(一):创建脚本,变量、字符串、数组、输入输出_编写一个shell脚本,由键盘输入8个字符串给数组hello,输出这个数组中元素长度-程序员宅基地

文章浏览阅读4.6k次。0.创建一个Shell脚本:vim abc.sh 1.首行声明所使用的shell:#!/bin/bash#!是一个特殊的标识符,其后,跟着解释此脚本的shell路径。bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,...默认使用bash 2.为脚本增加可执行权限:chmod u+x abc.sh 3.Shel..._编写一个shell脚本,由键盘输入8个字符串给数组hello,输出这个数组中元素长度

Vue 解析token 方法-程序员宅基地

文章浏览阅读4.5k次。 jwt-decode cnpm jwt-decode install 可以解析出过期时间,名字,id等等import 名字 from 'jwt-decode'const decoded = 名字(token);console.log(decoded)

VMware ESXi 扩容后提示“无法打开虚拟机的电源,请确认该虚拟磁盘是适用“厚”选项创建的”等信息,执行VMDK 格式是 zeroedthick 还是 eagerzeroedthick_请确认该虚拟磁盘是使用“厚”选项创建的-程序员宅基地

文章浏览阅读1.1w次,点赞2次,收藏6次。作为网络攻城狮大家通常架设服务用到最多的无非就是VMware ESX/ESXi了,那我们在部署虚拟化过程中难免会根据负载进行调整扩容优化,这次介绍下在部分硬盘模式中扩容会造成无法开机等事宜,一个个人正式案例进行备录,希望对大家也有所帮助和提示。环境:DellEMC-ESXi-6.7.0-8169922-A01 (Dell)客户机Server:Microsoft Windows Server 2016 (64 位) VBS /ESXi 6.7 及更高版本 (虚拟机版本 14)磁盘/类型:100G/厚置备_请确认该虚拟磁盘是使用“厚”选项创建的

get请求一个html页面,get请求代码-程序员宅基地

文章浏览阅读2.5k次。CSS布局HTML小编今天和大家分享示例代码?想向服务器发送带参数的数据。参数如何传递?传递的方式有以下四种: 第一种:直接在URL后面加参数: localhost:21811/Handler1.ashx?id=1&name="abc"; 第二种:用超链接的方法传递参数:当点击超链接的时候,首先会跳转: localhost:21811/Handler1.ashx页面。关于java web中..._get一个页面

Multsim 电路仿真软件中交流电压表与电流表读数不准确的原因处理_multisim汉化版交流电表读数不准-程序员宅基地

文章浏览阅读1.6w次,点赞44次,收藏38次。Multsim14.2 电路仿真软件中交流电压表与电流表读数不准确的原因处理看图,读数不正确问题原因处理方案修改成以下内容并保存成功处理看图,读数不正确问题原因这是汉化引起的小BUG处理方案修改汉化文件夹中的 PRP.ewstr 大约第80多行左右将交流改为 AC将直流改为 DC修改成以下内容并保存** IDS_MODECMB_TXT_AC=>AC< **..._multisim汉化版交流电表读数不准

ACM比赛中如何加速c++的输入输出?如何使cin速度与scanf速度相当?什么是最快的输入输出方法?_c++用cin怎么和scanf一样快-程序员宅基地

文章浏览阅读1.4w次,点赞25次,收藏73次。在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式。相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据。还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急。难道C++真的低Pascal一等吗?答案是不言而喻的。一个进阶的方法是把数据一下子读进来,然后再转化字符串,这种方法传说中很不错,_c++用cin怎么和scanf一样快