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


    =========================================================================

    准备工作:(必须)

    第一步:

    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!

  • 相关阅读:
    Effective C# Item6:明辨值类型和引用类型的使用场合
    Effective C# Item15:利用using和try/finally语句来清理资源
    Effective C# Item12:变量初始化器优于赋值语句
    Effective C# Item19:定义并实现接口优于继承类型
    Effective C# Item14:利用构造器链
    Effective C# Item18:实现标准Dispose模式
    Effective C# Item17:尽量减少装箱和拆箱
    Effective C# Item7:将值类型尽可能实现为具有常量性和原子性的类型
    Effective C# Item10:理解GetHashCode()方法的缺陷
    Effective C# Item20:明辨接口实现和虚方法重写
  • 原文地址:https://www.cnblogs.com/airchip/p/14016939.html
Copyright © 2020-2023  润新知