当前位置: 首页 > news >正文

【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 安装到之前指定的目录下

安装完毕后,需要将两个路径添加到环境变量

  1. qt库的 bin目录: 这里面包含了所有的 dll 文件,这是执行文件在运行时所需的
  2. 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 选择任意一种下载即可&#xff0c;适用于 Windows 和 Linux 环境 ​ 这里选择下载 .zip 文件。 2、安装依赖 (1) 安装 perl perl 安装包下载地址: download | perl for windows 根据当前系统选择对应版本。…...

php实战案例记录(15)获取GET和POST请求参数

在PHP中&#xff0c;可以使用$_GET和$_POST超全局变量来获取GET和POST请求参数。 获取GET请求参数&#xff1a; 要获取GET请求参数&#xff0c;可以使用$_GET超全局变量。它是一个关联数组&#xff0c;其中键是参数的名称&#xff0c;值是参数的值。例如&#xff0c;如果URL是…...

k8s-9 ingress-nginx 特性

TLS加密 创建证书 测试 auth认证 创建认证文件 rewrite重定向 进入域名 会自动重定向hostname.html 示例二&#xff1a; 测试 后面必须跟westos 这个关键字 canary金丝雀发布 基于header灰度 场景&#xff1a;版本的升级迭代&#xff0c;比如一个service 升级到另…...

java案例24:模拟百度翻译

思路&#xff1a; 编写一个程序模拟百度翻译 用户输入英文之后&#xff0c;搜索程序中对应的中文&#xff0c; 如果搜索到1对应的中文&#xff0c;就输出搜索结果&#xff0c;反之给出提示 要求使用Map集合实现英文与中文的存储。1.百度翻译主要用于翻译对应的意思&#xff0c…...

汽车烟雾测漏仪(EP120)

【汽车烟雾测漏仪&#xff08;EP120&#xff09;】 此烟雾测漏仪专为车辆管道&#xff08;油道、气道、冷却管道&#xff09; 的泄露检测而设计。适用于所有轻型 汽车、摩托车、轻卡、游艇等。 【特点】 具有空气模式和烟雾模式。空气模式&#xff0c;无需烟雾&#xff0c;检测…...

【轻松玩转MacOS】安全隐私篇

引言 这一篇将介绍如何保护MacOS的安全&#xff0c;包括如何设置密码&#xff0c;使用防火墙&#xff0c;备份数据等重要环节&#xff0c;避免因不慎操作或恶意攻击带来的安全风险&#xff0c;让你的MacOS之旅更安心、更放心。 一、设置密码&#xff1a;保护你的MacOS的第一道…...

4.02 用户中心-上传头像功能开发

详细内容请看下面地址&#xff1a; 地址&#xff1a;http://www.gxcode.top/code...

在Ubuntu 18.04安装Docker

安装需要的包 $ sudo apt-get update 安装 apt 依赖包&#xff0c;用于通过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样式冲突

默认情况&#xff1a;写在组件中的样式会全局生效->因此很容易造成多个组件之间的样式冲突问题 1.全局样式&#xff1a;默认组件中的样式会作用到全局 2.局部样式&#xff1a;可以给组件加上scoped属性&#xff0c;可以让样式只作用于当前组件 <style scoped> <…...

Matlab之查询子字符串在字符串中的起始位置函数strfind

一、功能 strfind函数用于在一个字符串中查找指定的子字符串&#xff0c;并返回子字符串在字符串中的起始位置。 二、语法 indices strfind(str, pattern) 其中&#xff0c;str是要进行查找的字符串&#xff0c;pattern是要查找的子字符串。 函数会返回一个由子字符串在字…...

[游戏开发][Unity]安卓出包报错记录

打包报错日志有以下几种类型&#xff1a; 报错&#xff1a; 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小的数

一、题目 给定两个已经排序的数组&#xff08;假设按照升序排列&#xff09;&#xff0c;然后找出第K小的数。比如数组A {1&#xff0c; 8&#xff0c; 10&#xff0c; 20}&#xff0c; B {5&#xff0c; 9&#xff0c; 22&#xff0c; 110}&#xff0c; 第 3 小的数是 8.。…...

Linux 指令心法(十)`head` 显示文本文件的开头部分

文章目录 命令的概述和用途命令的用法命令行选项和参数的详细说明命令的示例命令的注意事项或提示 命令的概述和用途 head 是一个用于显示文本文件的开头部分的命令。它在 Linux 和 Unix 系统中非常有用&#xff0c;因为它允许用户查看文件的前几行&#xff0c;以便快速预览文…...

前端——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…...

一致性哈希算法

普通取模算法 假设我们有三台缓存服务器&#xff0c;用于缓存图片&#xff0c;我们为这三台缓存服务器编号为 0号、1号、2号&#xff0c;现在有3万张图片需要缓存&#xff0c;我们希望这些图片被均匀的缓存到这3台服务器上&#xff0c;以便它们能够分摊缓存的压力。也就是说&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.服务端上线&#xff0c;下线&#xff0c;以及客户端的资源销毁(上)添加socket 变量添加 socket 消息填补config信息创建线程函数 并运行添加Addhost添加 getIt…...

磁盘满了对日志打印(Logback)的影响

背景 我们生产环境有一个服务半夜报警&#xff1a;磁盘剩余空间不足10%&#xff0c;请及时处理。排查后发现是新上线的一个功能&#xff0c;日志打太多导致的&#xff0c;解决方法有很多&#xff0c;就不赘述了。领导担心报警不及时、或者报警遗漏&#xff0c;担心磁盘满了对线…...

【算法与数据结构】--算法基础--数据结构概述

一、什么是数据结构 数据结构是一种组织和存储数据的方式&#xff0c;它定义了数据之间的关系、操作和存储方式&#xff0c;以便有效地访问和修改数据。数据结构是计算机科学中的一个重要概念&#xff0c;它为处理和管理数据提供了基本框架。数据结构通常包括以下几个重要方面…...

QECon大会亮相产品,全栈测试平台推荐:RunnerGo

最近在gitee上看见一款获得GVP&#xff08;最有价值开源项目&#xff09;的测试平台RunnerGo&#xff0c;看他们官网介绍包含了接口测试、性能测试、自动化测试。知道他们有saas版可以试用&#xff0c;果断使用了一下&#xff0c;对其中场景管理和性能测试印象深刻&#xff0c;…...

前端小案例-图片存放在远端服务器

前端小案例-图片存放在远端服务器 项目背景&#xff1a; 一个智能产业园的小程序由于可以控制很多种设备&#xff0c;可能有灯、空调、窗帘等智能设备。 现在面临以下问题&#xff1a; 需要存放很多设备的图标。设备的图标可能会进行修改。 为了解决上面的问题&#xff0c…...

【鼠标右键菜单添加用VSCode打开文件或文件夹】

鼠标右键菜单添加用VSCode打开文件或文件夹 演示效果如下&#xff1a; 右击文件 或右击文件夹 或在文件夹内空白处右击 方法一&#xff1a;重装软件 重装软件&#xff0c;安装时勾选如图所示方框&#xff08;如果登录的有账号保存有配置信息可以选择重装软件&#xff0c…...

【jvm--堆】

文章目录 1. 堆&#xff08;Heap&#xff09;的核心概述2. 图解对象分配过程2.1 Minor GC&#xff0c;MajorGC、Full GC2.1 堆空间分代思想2.3 内存分配策略2.4 TLAB&#xff08;Thread Local Allocation Buffer&#xff09;2.5 堆空间的参数设置2.6 逃逸分析2.7 逃逸分析&…...

【数据库——MySQL(实战项目1)】(1)图书借阅系统

目录 1. 简述2. 功能3. 数据库结构设计3.1 绘制 E-R 图3.2 创建数据库3.3 创建表3.4 插入表数据 1. 简述 经过前期的学习&#xff0c;我们已经掌握数据库基础操作&#xff0c;因此是时候来做一个实战项目了——图书借阅系统。对于图书借阅系统&#xff0c;相信大家不难想到至少…...

[GXYCTF 2019]Ping Ping Ping题目解析

本题考察的内容是rce绕过&#xff0c;本事过滤的东西不算多也算是比较好绕过 基础看到这种先ping一下试试看 输入127.0.0.1看看有啥东西 有回显说明可以接着往下做 借用RCE漏洞详解及绕过总结(全面)-CSDN博客这个大佬整理的rce绕过 ;A;B无论真假&#xff0c;A与B都执行&…...

HTTP协议的请求协议和响应协议的组成,HTTP常见的状态信息

HTTP协议 什么是协议 协议实际上是某些人或组织提前制定好的一套规范,大家只要都按照这个规范来就可以做到沟通无障碍 HTTP协议是W3C(万维网联盟组织)制定的一种超文本传输通信协议(发送消息的模板和数据的格式),除了传送字符串,还有声音、视频、图片等流媒体等超文本信息 …...

【LeetCode】剑指 Offer Ⅱ 第6章:栈(6道题) -- Java Version

题库链接&#xff1a;https://leetcode.cn/problem-list/e8X3pBZi/ 类型题目解决方案栈的应用剑指 Offer II 036. 后缀表达式模拟 栈 ⭐剑指 Offer II 037. 小行星碰撞分类讨论 栈 ⭐单调栈剑指 Offer II 038. 每日温度单调栈 ⭐剑指 Offer II 039. 直方图最大矩形面积单调栈…...

vue3的element-plus的el-dialog的样式修改无效问题

问题描述 想要修改element-plus的对话框el-dialog中的样式&#xff0c;发现在页面style的scoped属性下&#xff0c;使用:deep深入选择器进行修改是无效的。&#xff08;vue2下深度选择器是有效的&#xff09; //无效 :deep(.el-dialog){background-color: transparent; }解决…...

归纳所猜半结论推出完整结论:CF1592F1

https://www.luogu.com.cn/problem/CF1592F1 场上猜了个结论&#xff0c;感觉只会操作1。然后被样例1hack了。然后就猜如果 ( n , m ) (n,m) (n,m) 为1则翻转4操作&#xff0c;被#14hack了。然后就猜4操作只会进行一次&#xff0c;然后就不知道怎么做下去了。 上面猜的结论都…...

WPFdatagrid结合comboBox

在WPF的DataGrid中希望结合使用ComboBox下拉框&#xff0c;达到下拉选择绑定的效果&#xff0c;在实现的过程中&#xff0c;遇到了一些奇怪的问题&#xff0c;因此记录下来。 网上能够查询到的解决方案&#xff1a; 总共有三种ItemSource常见绑定实现方式&#xff1a; 1.ItemS…...