Windows10+VS2022从源码编译Qt5.15.5

2023-10-28

操作步骤

1、下载安装QT5编译必要的工具
2、下载QT5源码并按需修改配置文件
3、进行动态库和静态库的编译

安装VS2022在这里插入图片描述

下载安装Perl

下载 Strawberry Perl 的64位Portable版本并解压
Strawberry Perl 下载

下载安装Ruby最新本版

目前最新版本是rubyinstaller-3.0.3-1-x64.7z 下载后解压

Ruby 下载

下载Qt5.15.5源码并解压

Qt5.15.5 下载

注意: 下载的软件解压到非中文目录(vs2022集成的python不需要这一步)

添加Perl ,Ruby以及gnuwin32到Path环境变量(gnuwin32工具包含在QT源文件根目录下),工具路径如图所示

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打开cmd,输入echo %path% 查看系统环境变量path信息
在这里插入图片描述
cmd输入:perl --version、ruby --version 以及 flex --version回车执行,正确输出各个工具版本信息则编译工具链配置完成。

开始编译

这里演示动态库编译和静态库编译(推荐QT使用方式是动态库的方式,虽然需要携带几个dll,但是这种方式是LGPL许可协议中商业许可的。如果使用静态链接打包QT库到单个可执行文件中,有着诸多的商用限制,具体查看相关的协议许可)

首先是QT的32位动态库编译,在左下角开始菜单中,查找打开 Visual Studio 2022文件夹下的 x86 Native Tools Command Prompt for VS 2022 Current,(编译64位库则打开x64 Native Tools Command Prompt for VS 2022 Current,编译32位库和64位库只有此处不同),cd命令进入到源文件根目录下,按行依次执行

configure -prefix “d:\qt5” -shared -release -nomake examples -nomake tests -skip qtwebengine -opensource -confirm-license
nmake
nmake install
上边的出错,就用下边的这个
configure -confirm-license -opensource -debug -qt-sqlite -qt-zlib -qt-libpng -qt-libjpeg -nomake tests -no-compile-examples -nomake examples

-prefix 代表构建目录,是编译完成后,头文件和库文件的输出路径,建议这里的文件夹名全英文,否则可能会在最后nmake install 报copy命令语法不正确的错误
-shared -static 表示生成动态或静态库,不指定此参数默认是动态库
-release 生成release发布版,或指定 -debug调试版
-nomake 指定不编译输出的子文件夹
-skip 指定跳过编译的子模块
-opensource 表示编译开源版本,相对的是 -commercial ,表示编译商业版本
-confirm-license 表示确认许可协议
经过长时间的等待,在 prefix 构建目录下得到编译出来的QT头文件和库文件

静态编译(这里只是演示),重新编译建议删除整个源码目录并重新从压缩包解压,并重新指定或清除 prefix 构建库目录。静态库编译其他步骤与动态库编译相同,只需要修改configure命令中的 -shared 为 -static

configure -prefix “d:\qt5-s” -static -release -nomake examples -nomake tests -skip qtwebengine -opensource -confirm-license
nmake
nmake install
上边的出错,就用下边的这个
configure -confirm-license -opensource -static -qt-sqlite -qt-zlib -qt-libpng -qt-libjpeg -nomake tests -no-compile-examples -nomake examples

QT静态库的编译需要注意编译选项/MD 、 /MT要和开发项目中引用的其他库相匹配。如果要修改此编译选项,可以在QT源文件根目录下的 qtbase\mkspecs\common\msvc-desktop.conf 中修改

QMAKE_CFLAGS_RELEASE    = $$QMAKE_CFLAGS_OPTIMIZE -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MD
QMAKE_CFLAGS_DEBUG      = -Zi -MDd

或者

QMAKE_CFLAGS_RELEASE    = $$QMAKE_CFLAGS_OPTIMIZE -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MT
QMAKE_CFLAGS_DEBUG      = -Zi -MTd

8、QT子模块的编译
这里只演示编译QT中子模块qtbase(只需要这个模块就可以完成QT中最主要的GUI功能的开发),其编译与整个QT的编译大体相同,打开x86 Native Tools Command Prompt for VS 2022 Current,cd命令进入到QT源文件根目录,按行依次执行命令

configure -prefix “d:\qt5-qtbase” -shared -release -nomake examples -nomake tests -opensource -confirm-license
nmake module-qtbase
cd qtbase
nmake install

编译qtbase模块的时间会比整个QT少得多。qtbase静态库的编译同样也只需要修改 -shared 为 -static,这里不赘述。

编译成功后,添加到QtCreat

在这里插入图片描述
D:\QtStaticBuild-IDE\qt-everywhere-src-5.15.5\qtbase\bin

在这里插入图片描述

使用jom多线程编译Qt

jom多线程编译

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows10+VS2022从源码编译Qt5.15.5 的相关文章

随机推荐

  • 原来类加载器的原理是这样执行的

    原文链接 深入类加载原理 我们知道 我们写的java文件是不能直接运行的 我们可以在IDEA中右键文件名点击运行 这中间其实掺杂了一系列的复杂处理过程 这篇文章 我们只讨论我们的代码在运行之前的一个环节 叫做类的加载 按照我写文章的常规惯例
  • MyBatis下DataSource的配置原理以及多数据源的配置

    MyBatis下多数据源的配置 多datasource的配置原理 将不同数据源的mapper接口放在不同的包内 再在数据源配置中 用 MapperScan注解扫描不同的包 引言 先来学习一下单数据源情况下的配置原理 只关心多数据源的配置方法
  • Linux常用命令总结

    很全啊 记录一下 https mp weixin qq com s biz MzI3MjY1ODI2Ng mid 2247485996 idx 1 sn 0a08bf2f04eed49542a96cee6928a561 chksm eb2e
  • 第一个 Spring Boot 子服务——会员服务

    经过上两个章节的分析 设计工作 相信你已经对项目的整体结构有了更清晰的认识 剩下的工作就是依据设计 将项目骨架拉出来 往里面直充血肉 搭建项目骨架 约定项目名称为 parking project 建立 Maven 项目 packaging
  • 广州面试题------39健康网1广州启生信息技术有限公司

    部分笔试答案 3 接口 interface 是抽象方法和常量值的定义的集合 从本质上讲 接口是一种特殊的抽象类 这种抽象类中包含常量和方法的定义 而没有变量和方法的实现 1 接口是一组规则的集合 它规定了实现本接口的类或接口必须拥有的一组规
  • 【语义分割】轻量级人像分割PP-HumanSeg NCNN C++ windows部署

    ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架 ncnn 从设计之初深刻考虑手机端的部署和使用 无第三方依赖 跨平台 手机端 cpu 的速度快于目前所有已知的开源框架 基于 ncnn 开发者能够将深度学习算法轻松移植到手机端高
  • C++ std::string 字符串替换

    std string里面std replace只有单字符替换 std replace str begin str end 单字符替换 将双引号换成 符 如果有字符串替换的话需要配合find 使用
  • 【React】根据条件渲染不同的组件内容

    需求如下 但我点击不同的按钮时 下面渲染的是不同组件的内容 wokao这个图片大小咋调 每回都贼大 第一步 先写好不同组件的内容 第二步 在state状态里面加一个Type进行记录 第三步 核心代码如下 好了 说白了就是通过改变type的值
  • php 在线测试 tool,在线程序员工具箱

    Tool lu 将在线工具分为开发类 站长类 极客 Geek 类以及其他 其中收录很多在开发或网站站长会用到的工具 例如 CSS JavaScript PHP 代码优化 压缩 SQL Ruby 和 Json Python 等代码美化 图片编
  • 深度学习——全连接层(Fully connected dence layers)原理解析

    深度学习 全连接层 Fully connected dence layers 原理解析 一 简介 全连接层有多个神经元 是一个列向量 单个样本 在计算机视觉领域正常用于深度神经网络的后面几层 用于图像分类任务 全连接层算法包括两部分 前向传
  • Java集合篇:ArrayList详解

    一 ArrayList概述 ArrayList是实现了List接口的动态数组 所谓动态数组就是他的大小是可变的 实现了所有可选列表操作 并允许包括Null在内的所有元素 除了实现 List 接口外 此类还提供一些方法来操作内部用来存储列表的
  • Eclips 安装教程

    Eclipse 安装教程 一 Eclipse 下载 二 Eclipse 安装 三 Eclipse 使用 一 Eclipse 下载 第一步 进入官方下载网站 https www eclipse org downloads 点击下载按钮下方 D
  • ACM-ICPC如何起步

    刚刚绝定投身ACM ICPC的同学先要过两关 第一关 程序设计语言 如果学校有开设相关课程 则省去了很多麻烦 如果没有则可以选择 程序设计导引及在线实践 作为教材 现在的比赛中允许使用的语言相对局限 建议c和c 至少掌握一种 java可以在
  • [转]ZC702与ZedBoard开发板的比较

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com ZC702与Z
  • C++空指针和野指针

    空指针 指针被赋值为空 例如 int p nullptr int p NULL 空指针指向的地址是00000000 但空指针不可以解引用 野指针 指针指向了不可控的位置 例如 未初始化 int p 野指针 越界访问 int intArr 5
  • JVM入门解读

    文章目录 1 Java虚拟机的概念和作用 Java虚拟机的概念 Java虚拟机的Java代码详解 2 JVM架构和组件 JVM架构和组件的概念 JVM架构和组件的Java代码详解 3 类加载机制 类加载机制的概念 类加载机制的Java代码详
  • Python爬虫连载4-Error模块、Useragent详解

    一 error 1 URLError产生的原因 1 没有网络 2 服务器连接失败 3 不知道指定服务器 4 是OSError的子类 from urllib import request error if name main url http
  • Python的人工智能模拟框架

    1 ai描述图片 OpenCV Pillow Scikit image 2 ai模拟键盘操作 PyAutoGUI Keyboard PyKeyboard 3 ai模拟触屏操作 PyUserInput uiautomator Appium 4
  • 谁动了我的文件——使用audit监控文件和目录

    有时候在系统上经常会遇到某个文件不知被谁修改了 或者删除了 又找不到证据 这时候audit就派上用场了 比如我要监控 var log test这个目录 可以这样新增一个监控项 root CentOS 7 2 var log test aud
  • Windows10+VS2022从源码编译Qt5.15.5

    操作步骤 1 下载安装QT5编译必要的工具 2 下载QT5源码并按需修改配置文件 3 进行动态库和静态库的编译 安装VS2022 下载安装Perl 下载 Strawberry Perl 的64位Portable版本并解压 Strawberr