【QT】Windows 编译并使用 QT 5.12.7源码
1、下载 QT 源码
QT5.12.7源码下载地址: download | QT 5.12.7
选择任意一种下载即可,适用于 Windows 和 Linux 环境
这里选择下载 .zip 文件。
2、安装依赖
(1) 安装 perl
perl 安装包下载地址: download | perl for windows

根据当前系统选择对应版本。下载完毕后双击开始安装,一路next即可。最终可以在命令行查看perl 是否安装成功,输入 perl -v

(2) 安装 ruby
ruby 国内下载镜像: download | ruby 3.2.2
点击所需版本开始下载,下载完毕后就根据提示进行安装

![]()
安装完毕后,点击 finish,此时会出现一个弹窗,输入 3

检查是否安装成功

(3) 安装 python
python 下载地址: Welcome to Python.org
python的安装这里就不再赘述,可以自行百度,python 版本只需要大于 2.7 即可。

3、创建编译脚本
因为编译 QT 涉及的选项较多,这里选择使用自定义的脚本来进行编译,在 qt 源码的上一层目录下新建一个脚本文件 qt-config.bat。脚本文件的内容如下:
@echo offcall "D:/Download/VS2019/install/VC/Auxiliary/Build/vcvars64.bat"pushd qt-everywhere-src-5.12.9configure -prefix C:/Users/GZX/Desktop/qt-everywhere-src-5.12.9/install -opensource -confirm-license -debug -static -nomake examples -nomake tests -skip qtquickcontrols -skip qtquickcontrols2 -skip qtsensors -skip qtdoc -no-openssl -no-opengl -mp
第一句 @echo off 表示不打印注释
第二句 call 是用来引用vs编译器的相关环境变量的,路径需要跟你实际的安装路径对应(推荐使用 everything 工具找到对应的文件)

第三句 pushd 表示进入到qt源码目录下,该目录下包含 configure.bat 文件
第四句就是配置 qt 的编译选项了,可以参考下面的部分选项解释(下面是Linux环境下的脚本)

4、开始编译 QT 源码
进入到 qt-config.bat 脚本所在的命令行路径,输入 .\qt-config.bat 便可以开始运行脚本进行编译了(中间可能会停下来,需要你选择qt版本和是否接受认证)

执行完毕后,接下来输入 nmake 进入漫长的编译过程了。(建议预留足够的磁盘空间)
编译完毕后,输入 nmake install 安装到之前指定的目录下
安装完毕后,需要将两个路径添加到环境变量
- qt库的 bin目录: 这里面包含了所有的 dll 文件,这是执行文件在运行时所需的
- qt 库的 platforms目录: 该目录的位置在 qt安装目录/plugins/platforms
5、cmake 引入 QT 库
CMakeLists.txt
cmake_minimum_required(VERSION 3.15.0)
project(QTTest)set(QT_ROOT_PATH "C:/Users/GZX/Desktop/qt5_7_lib_shared_64")
# 添加库的检索路径
list(APPEND CMAKE_PREFIX_PATH ${QT_ROOT_PATH})
find_package(Qt5 COMPONENTSGuiCoreWidgets
)
# 添加头文件路径
include_directories(${QT_ROOT_PATH}/include)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON) # 自动编译.ui文件
set(CMAKE_AUTORCC ON) # 自动编译.qrc文件
set(CMAKE_AUTOMOC ON) # 自动编译包含宏Q_OBJECT的文件add_executable(${PROJECT_NAME} qtTest.cpp)
target_link_libraries(${PROJECT_NAME}Qt5::CoreQt5::WidgetsQt5::Gui
)
qtTest.cpp
#include <QtWidgets/QLabel>
#include <QtWidgets/QApplication>int main(int argc, char** argv)
{QApplication app(argc, argv);QLabel *label = new QLabel("Hello Qt!");label->show();app.exec();return 0;
}
参考文章:
记一次Qt 5.15源码编译 - 知乎
Windows平台下安装Ruby_windows安装ruby-CSDN博客
Perl 环境安装 | 菜鸟教程
相关文章:
【QT】Windows 编译并使用 QT 5.12.7源码
1、下载 QT 源码 QT5.12.7源码下载地址: download | QT 5.12.7 选择任意一种下载即可,适用于 Windows 和 Linux 环境 这里选择下载 .zip 文件。 2、安装依赖 (1) 安装 perl perl 安装包下载地址: download | perl for windows 根据当前系统选择对应版本。…...
php实战案例记录(15)获取GET和POST请求参数
在PHP中,可以使用$_GET和$_POST超全局变量来获取GET和POST请求参数。 获取GET请求参数: 要获取GET请求参数,可以使用$_GET超全局变量。它是一个关联数组,其中键是参数的名称,值是参数的值。例如,如果URL是…...
k8s-9 ingress-nginx 特性
TLS加密 创建证书 测试 auth认证 创建认证文件 rewrite重定向 进入域名 会自动重定向hostname.html 示例二: 测试 后面必须跟westos 这个关键字 canary金丝雀发布 基于header灰度 场景:版本的升级迭代,比如一个service 升级到另…...
java案例24:模拟百度翻译
思路: 编写一个程序模拟百度翻译 用户输入英文之后,搜索程序中对应的中文, 如果搜索到1对应的中文,就输出搜索结果,反之给出提示 要求使用Map集合实现英文与中文的存储。1.百度翻译主要用于翻译对应的意思,…...
汽车烟雾测漏仪(EP120)
【汽车烟雾测漏仪(EP120)】 此烟雾测漏仪专为车辆管道(油道、气道、冷却管道) 的泄露检测而设计。适用于所有轻型 汽车、摩托车、轻卡、游艇等。 【特点】 具有空气模式和烟雾模式。空气模式,无需烟雾,检测…...
【轻松玩转MacOS】安全隐私篇
引言 这一篇将介绍如何保护MacOS的安全,包括如何设置密码,使用防火墙,备份数据等重要环节,避免因不慎操作或恶意攻击带来的安全风险,让你的MacOS之旅更安心、更放心。 一、设置密码:保护你的MacOS的第一道…...
4.02 用户中心-上传头像功能开发
详细内容请看下面地址: 地址:http://www.gxcode.top/code...
在Ubuntu 18.04安装Docker
安装需要的包 $ sudo apt-get update 安装 apt 依赖包,用于通过HTTPS来获取仓库 $ sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common添加 Docker 的官方 GPG 密钥 $ curl -fsSL https://download.do…...
Vue-2.1scoped样式冲突
默认情况:写在组件中的样式会全局生效->因此很容易造成多个组件之间的样式冲突问题 1.全局样式:默认组件中的样式会作用到全局 2.局部样式:可以给组件加上scoped属性,可以让样式只作用于当前组件 <style scoped> <…...
Matlab之查询子字符串在字符串中的起始位置函数strfind
一、功能 strfind函数用于在一个字符串中查找指定的子字符串,并返回子字符串在字符串中的起始位置。 二、语法 indices strfind(str, pattern) 其中,str是要进行查找的字符串,pattern是要查找的子字符串。 函数会返回一个由子字符串在字…...
[游戏开发][Unity]安卓出包报错记录
打包报错日志有以下几种类型: 报错: CommandInvokationFailure: Android Asset Packaging Tool failed. E:\Android-SDK-Tool\build-tools\33.0.2\aapt.exe package -v -f -F raw.ap_ -A raw -0 "" --ignore-assets "!.svn:!.git:!.ds_st…...
在两个有序数组中找整体第k小的数
一、题目 给定两个已经排序的数组(假设按照升序排列),然后找出第K小的数。比如数组A {1, 8, 10, 20}, B {5, 9, 22, 110}, 第 3 小的数是 8.。…...
Linux 指令心法(十)`head` 显示文本文件的开头部分
文章目录 命令的概述和用途命令的用法命令行选项和参数的详细说明命令的示例命令的注意事项或提示 命令的概述和用途 head 是一个用于显示文本文件的开头部分的命令。它在 Linux 和 Unix 系统中非常有用,因为它允许用户查看文件的前几行,以便快速预览文…...
前端——Layui的导航栏与tab页联动
一、body <!-- 导航栏 --><div class"layui-side layui-bg-black"><div class"layui-side-scroll"><ul id"nav" class"layui-nav layui-nav-tree" lay-filter"stock"><li class"layui-n…...
一致性哈希算法
普通取模算法 假设我们有三台缓存服务器,用于缓存图片,我们为这三台缓存服务器编号为 0号、1号、2号,现在有3万张图片需要缓存,我们希望这些图片被均匀的缓存到这3台服务器上,以便它们能够分摊缓存的压力。也就是说&a…...
深度学习基础之参数量(3)
一般的CNN网络的参数量估计代码 class ResidualBlock(nn.Module):def __init__(self, in_planes, planes, norm_fngroup, stride1):super(ResidualBlock, self).__init__()print(in_planes, planes, norm_fn, stride)self.conv1 nn.Conv2d(in_planes, planes, kernel_size3, …...
红队专题-从零开始VC++远程控制软件RAT-C/S-[2]界面编写及上线
红队专题 招募六边形战士队员1.课前回顾unicode编码 字符串 2.界面编程(下)对话框重载消息函数更改对话框同步更改 3.服务端上线,下线,以及客户端的资源销毁(上)添加socket 变量添加 socket 消息填补config信息创建线程函数 并运行添加Addhost添加 getIt…...
磁盘满了对日志打印(Logback)的影响
背景 我们生产环境有一个服务半夜报警:磁盘剩余空间不足10%,请及时处理。排查后发现是新上线的一个功能,日志打太多导致的,解决方法有很多,就不赘述了。领导担心报警不及时、或者报警遗漏,担心磁盘满了对线…...
【算法与数据结构】--算法基础--数据结构概述
一、什么是数据结构 数据结构是一种组织和存储数据的方式,它定义了数据之间的关系、操作和存储方式,以便有效地访问和修改数据。数据结构是计算机科学中的一个重要概念,它为处理和管理数据提供了基本框架。数据结构通常包括以下几个重要方面…...
QECon大会亮相产品,全栈测试平台推荐:RunnerGo
最近在gitee上看见一款获得GVP(最有价值开源项目)的测试平台RunnerGo,看他们官网介绍包含了接口测试、性能测试、自动化测试。知道他们有saas版可以试用,果断使用了一下,对其中场景管理和性能测试印象深刻,…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
