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

【Qt】编译 Qt 5.15.x For Windows 基础教程 Visual Studio 2019 MSVC142 x64

【Qt】编译 Qt 5.15.x For Windows 基础教程 Visual Studio 2019 MSVC142 x64

在这里插入图片描述

目录

  • 【Qt】编译 Qt 5.15.x For Windows 基础教程 Visual Studio 2019 MSVC142 x64
    • 准备工作:(必须)
      • 第一步:
      • 第二步:
      • 第三步:
    • 建议工作:(非必须)
      • 1,阅读此教程之前,请尽可能阅读Qt官方文档熟悉所有命令。
      • 2,编译环境建议在纯英文环境下进行,且源码路径与构建目录路径尽量简短且不包含空格、中文。
      • 3,构建之前,请更新 Visual Studio 版本到最新。(但建议是VS的长期维护版本,例如16.4、16.7.)
      • 4,请尽量锁定编译器版本。
      • 5,请尽可能在固态硬盘中进行构建。
    • 编译步骤:
      • 第一步:
      • 第二步:
      • 第三步:
      • 第四步:
      • 第四步:
      • 第五步:
      • 第六步:
    • 总结



准备工作:(必须)

第一步:

Qt 源码下载:https://download.qt.io/official_releases/qt/

Qt Creator 源码下载:https://download.qt.io/official_releases/qtcreator/

第二步:

安装 Visual Studio 2019 并配置 VC++ 桌面开发工作负载:(怎么安装就不用说了吧)

小白如何下载安装 Visual Studio:
https://docs.microsoft.com/zh-cn/visualstudio/?view=vs-2019

附上我的版本信息:

版本信息: Visual Studio 2019 16.8.x

平台工具集:MSVC142 x64

Windows SDK 版本:17763.132

C++编译器版本:Microsoft VC++ 1928

第三步:

编译 Qt 5.15 需要预先安装以下解释器并配置环境变量:

Python 3.x: https://www.python.org/downloads/

Perl64: https://www.perl.org/get.html

(以上缺一不可 !)

如果需要 Make 本地文档,则需要安装 LLVM ,而且需要的是 Qt Company 预构建的 LLVM 。

LLVM Qt Prebuilt:
https://download.qt.io/development_releases/prebuilt/libclang/qt/

虽然现代开发主张阅读官方在线文档,但对于有特殊需求的开发者仍然需要本地文档。

建议工作:(非必须)

1,阅读此教程之前,请尽可能阅读Qt官方文档熟悉所有命令。

Qt 构建流程简述:
https://doc.qt.io/qt-5/windows-building.html

Qt Configure 命令官方解释:
https://doc.qt.io/qt-5/configure-options.html

Qt Doc LLVM 预配置:
https://doc.qt.io/qt-5/qdoc-guide-clang.html

2,编译环境建议在纯英文环境下进行,且源码路径与构建目录路径尽量简短且不包含空格、中文。

笔者是使用 Hyper-V 安装英文版 Win10 LTSC ,不建议使用 VMware 客户端。

可以下载微软官方Windows开发环境(英文):
https://developer.microsoft.com/zh-cn/windows/downloads/virtual-machines/

3,构建之前,请更新 Visual Studio 版本到最新。(但建议是VS的长期维护版本,例如16.4、16.7.)

因为框架编译之后需要分发给用户使用很长时间,为了降低后期迁移维护的成本,请尽可能保持最新。

从软件开发者的角度来讲,我们是希望用户使用我们的最新版软件,同样,上游那些搞编译器的鬼精老头子们也希望我们使用最新版编译器。

同时,对于以后升级软件依赖的底层框架版本,改动也会更少。

4,请尽量锁定编译器版本。

打开你想用于构建的 Visual Studio ,随便新建一个C++项目,执行代码:

#include <iostream>int main()
{std::cout << _MSC_VER << std::endl;
}

可查看你当前的 VC++ 编译器版本号。

然后到源码目录中找到这个文件:

<SrcPath>\qtbase\mkspecs\common\msvc-version.conf

打开这个文件,在第一行添加:

QMAKE_MSC_VER = 1928

后面的数字就是你Print到的数字。

5,请尽可能在固态硬盘中进行构建。

整个构建过程相当于是对硬盘进行高频 4K IO 操作,为了保证性能,请尽可能使用固态硬盘,并在此之前手动运行Trim以确保最佳IO性能。笔者电脑配置为 Y9000k-2020H,10875H + 32GB 3200MHz + 1TB PM981a ,在Hyper-V中以CPU基础频率构建只需要两小时,效率非常高。


编译步骤:

第一步:

解压源码,并创建一个构建目录。

例如:

将源码解压到: C:\repos\Qt-Source-5.15.2

创建构建目录: C:\repos\Qt-Build-5.15.2

第二步:

在开始菜单中找到 Visual Studio 2019 程序组,并运行 x64 Native Tools Command Prompt for VS 2019 命令行工具,切换到源码目录。

如果你要编译 x86 版本,就运行 x86 的命令行工具。

然后切换到源码解压的目录:(路径根据个人选择,此为示例。)

cd C:\repos\Qt-Source-5.15.2

第三步:

设置 LLVM 路径,注意,LLVM 必须是上面说的由 Qt Company 预构建的 LLVM。

LLVM安装路径也是由个人选择,在此示例设置 LLVM 路径命令:

set LLVM_INSTALL_DIR=C:\SDK\LLVM\Qt\libclang
set QDOC_USE_STATIC_LIBCLANG=1

第一个命令就是设置 LLVM 安装路径到当前命令行环境变量。

第二个命令则是设置将 QDoc 编译为静态版本。(一般情况)

如果不需要本地文档,可以跳过LLVM步骤。现代开发主张阅读官网在线文档。

第四步:

执行安装配置。(最核心,非常重要)

命令行继续执行:

configure -debug-and-release -confirm-license -opensource -platform win32-msvc -prefix "C:\\repos\\Qt-Build-5.15.2" -qt-sqlite -qt-pcre -qt-zlib -qt-libpng -qt-libjpeg -qt-freetype -qt-harfbuzz -opengl dynamic -skip qtwebengine -nomake tests -no-compile-examples -mp

命令解读:

-debug-and-release : 编译 DeBug 和 Release 版本。

-confirm-license :自动选择许可类型。

-opensource :编译开源版本

-platform win32-msvc : 环境为 Win32 ,编译器为 MSVC。

-prefix "<Path>" :设置构建目录,最终构建好的文件将会输出到此目录。

-qt-sqlite -qt-pcre -qt-zlib -qt-libpng -qt-libjpeg -qt-freetype -qt-harfbuzz :选择连带构建的三方库。

具体有多少种三方库可构建,请参阅:https://doc.qt.io/qt-5/configure-options.html

-opengl dynamic :设置 OpenGL 版本为动态。和 desktop 具体区别请继续参阅上面地址。

-skip qtwebengine :跳过 Qt WebEngine 没有必要且体积非常大的东西。(官方都建议跳过)

-nomake tests :跳过 Tests 。

-no-compile-examples :跳过构建例子,但拷贝例子源码。

-mp :多核多线程编译。(加快编译速度)

第四步:

构建并Install文件到构建目录:

nmake && nmake install

此过程需要等待数小时,一般情况下两小时即可完成。

第五步:

生成文档:

nmake docs

第六步:

安装文档到构建目录:

nmake install_docs

总结

至此,Qt 框架编译完成。

Good luck!

http://www.xdnf.cn/news/354925.html

相关文章:

  • 记录 Mysql5.7 升级到 Mysql8.0 遇到的问题
  • vscode离线安装python插件
  • 红黑树算法笔记
  • 解决 Ubuntu DNS 无法解析问题(适用于虚拟机 长期使用)
  • RT-THREAD RTC组件中Alarm功能驱动完善
  • 【RAG】重点部分 RAG-Fusion, Decomposition, HyDE 和 Routing
  • Java设计模式之建造者模式:从入门到精通
  • Spring MVC Session 属性 (@SessionAttributes) 是什么?如何使用它共享数据?
  • Docker Compose 的详细使用总结、常用命令及配置示例
  • Java启动和停止jar文件sh脚本:自适应文件名方式启停 + 写死环境 启动;自适应文件名方式 + 命令行传参切换环境 启动
  • Spring、SpringMVC、SpringBoot、SpringCloud 联系与区别
  • Java、javax 和 Jakarta有什么区别?
  • 《P1177 【模板】排序》
  • MySQL 性能调优:从执行计划到硬件瓶颈
  • 人力资源管理系统如何有效提高招聘效率?
  • 若依定制pdf生成实战
  • neo4j图数据库基本概念和向量使用
  • AI云防护真的可以防攻击?你的服务器用群联AI云防护吗?
  • ESD防护ANT静电防护方案
  • 学前数学思维:初始行程
  • Docker常见疑难杂症解决指南:深入解析与实战解决方案
  • Spring 框架实战:如何实现高效的依赖注入,优化项目结构?
  • UE5骨骼插槽蓝图
  • 了解Hadoop
  • 互联网大厂Java求职面试:基于AI的实时异常检测系统设计与实现
  • PCB设计时如何选择USART、SPI、I2C
  • 【图像大模型】Stable Diffusion Web UI:深度解析与实战指南
  • 单调栈模版型题目(3)
  • 第20篇:Linux设备驱动程序入门<七>
  • 8b10b编解码仿真