标题 | Windows 10下编译、安装、配置Qt |
范文 | 谢逸轩 马维华
摘? 要: 为了获得最新MSVC 2019版Qt库开发软件,解决Qt在线安装包在国内无法使用,以及Qt官方自5.15版本起不再为开源社区提供离线安装包的问题。文章介绍了通过构建Qt库编译环境;遵照Qt发行说明配置编译参数;利用Qt源代码编译生成5.15版Qt库的整个过程。上述安装和配置利用Qt Creator成功编译并运行基于Qt5.15的HelloWorld程序来予以验证。 关键词: Qt编译; Qt5.15; Qt离线安装; MSVC 2019 中图分类号:TP312? ? ? ? ? 文献标识码:A? ? ?文章编号:1006-8228(2020)11-75-03 Abstract: In order to obtain the latest Qt library development software for MSVC 2019, solve the problem that Qt online installation package cannot be used in China, as well as Qt no longer provides official offline installation package for open source community since version 5.15. This paper introduces the whole process of generating Qt library version 5.15 that through building Qt library compiling environment, configuring compilation parameters according to the Qt release notes, and compiling the Qt source code. The installation and configuration are verified by Qt creator successfully compiling and running HelloWorld program based on Qt5.15. Key words: Qt compiling; Qt 5.15; Qt offline installation; MSVC 2019 0 引言 Qt是一个开源和商业授权并进的、以跨平台框架著称的,以C++语言为基础并带有多种主流语言扩展支持的,以图形用户界面为主要功能并附有其他系统资源控制类的,提供统一、直观、强大API的库函数集合。 近年来,Qt公司尝试通过强调开源用户义务、削减开源用户权利等措施提升用户为商业授权版Qt的付费意愿。Qt公司曾在安装包中强制用户登录,其后引发开源社区不满继而取消该措施[1]。如今不仅重操旧业,而且宣布自5.15版本起仅商业授权用户可获得Qt长期支持版以及离线安装包[2]。这一措施给身处网络环境不稳定的国内Qt用户带来了烦恼,国内Qt用户要么使用不含新功能和缺陷补丁的旧版本,要么花费大量时间和精力研究Qt的编译条件。 本文在最受开发人员欢迎的Windows 1064bit平台,利用Microsoft Visual Studio 2019 C++ Compiler(简称MSVC 2019)原生编译Qt 5.15库,然后结合Qt Creator 4.12.3开发运行基于Qt的HelloWorld程序。本文以严谨的作风,提出了一套行之有效的编译环境准备方法,并对编译过程中所需时间、硬盘空间以及内存空间给予相应提醒,使应用开发人员对Qt开发环境的搭建有合理、稳定的估计,并且像之前一样继续专注于程序开发。 1 Qt开发环境的安装 旧时的开发环境一般由文本编辑器和工具链(含编译器)组成,为了缩短开发时间和提高代码利用率,第三方库函数应运而生。但当第三方库函数强大到能实现某应用领域通用完备功能的底层服务时,我们一般称之为软件框架。Qt库即是实现通用图形用户界面的框架。 为了搭建Qt开发环境,我们需要依次安装集成了UI设计工具和文本编辑器的集成开发环境Qt Creator 4.12、工具链MSVC 2019以及图形框架Qt 5.15。 1.1 集成开发环境——Qt Creator的安装 访问Qt官方资源库[4],进入qtcreator子目录,选择最新版本qt-creator-opensource-windows-x86_64-4.12.3.exe下载。 打开可执行文件,登录Qt账号,阅读权利声明并确认,其余按默认设置完成安装。 1.2 工具链——MSVC 2019的安装 前往微软Visual Studio官网[3]下载Visual Studio 2019 生成工具,当然也可以安装Visual Studio 2019社区版作为替代。打开下载好的在线安装程序,在工作负载选项卡中选择“C++ 生成工具”,于右侧的安装详细信息中展开C++生成工具,确保MSVC、Windows 10 SDK、C++ CMake工具以及C++ATL共四项均被选中,其余根據需要增减组件并调整安装位置,确定安装即可。 1.3 图形框架——Qt 5.15的编译安装 本节将围绕Qt 5.15的编译安装,依次介绍源码获取、编译前环境准备、配置、编译以及安装共5个环节。为了介绍的方便,本节所有压缩包解压位置均以D盘示例。此外,本例提及的所有时间均在i7-9750H+固态硬盘+虚拟机的环境中反复实践得知。 1.3.1 源碼获取 https://download.qt.io/official_releases/qt/ 访问Qt官方源码库,选择最新版本5.15.0,下载扩展名为zip的压缩包(.xz文件win环境下解压会报错)。获得名为qt-everywhere-src-5.15.0.zip的Qt源码包,解压到D盘待用。 1.3.2 编译前环境准备之强制性要求 ⑴ ActivePerl https://www.activestate.com/products/downloads/ 访问ActivePerl官方网站,选择最新版本5.28,注册并登录后提供下载,保存的文件名为ActivePerl-5.28.1.0000-MSWin32-x64-b462fde1.exe。 典型安装即可。 ⑵ Python https://www.python.org/downloads/ 访问Python官方网站,选择Python 2.7.18(QtWebEngine模块仅支持Python2),获得名为python-2.7.18.amd64.msi的安装程序。 安装时注意勾选Add python.exe to Path选项,其余默认即可。 1.3.3 编译前环境准备之官方配置所需要求 Qt每个版本发布时,官方会通过发布日志[5]提供各平台各目标的官方推荐配置。Windows_10 (msvc2019-x86_64)平台下编译适用于Windows_10 (msvc2019-x86_64)的Qt库,需要额外准备以下第三方的预编译库以供Qt编译时使用。 ⑴ OpenSSL https://slproweb.com/products/Win32OpenSSL.html 由于OpenSSL官方仅提供源码,从源码编译又需要其他的前置条件。这里直接提供可信任的、适用Windows的、预编译的OpenSSL库的下载链接。获得名为Win64OpenSSL-1_1_1g.exe的安装包,典型安装并记安装后的位置为C:\Program Files\OpenSSL-Win64,编译Qt时需要用到。 ⑵ MySQL https://downloads.mysql.com/archives/ 选择connector/c。虽然connector/c++似乎更好,但是Qt不认。下载得到名为mysql-connector-c-6.1.11-winx64.zip的压缩包,将其解压到D盘待用。 ⑶ PostgreSQL https://www.postgresql.org/download/ https://www.enterprisedb.com/download-postgresql-binaries 前者可下载官方安装包,后者可由前者页面上超链接出来,并提供预编译库的下载。以后者为例,获得名为postgresql-12.3-1-windows-x64-binaries.zip,将其解压到D盘待用。 ⑷ LLVM(clang) https://releases.llvm.org/download.html LLVM是Qt Docs模块的依赖,缺少它并不影响其他模块的正常编译。前往官方网站,获得名为LLVM-10.0.0-win64.exe的安装程序,典型安装并记安装后的位置为C:\Program Files\LLVM,编译Qt时需要用到。 1.3.4 配置 用管理员权限打开CMD或者PowerShell,运行以下命令设置用户环境变量: SETX LLVM_INSTALL_DIR "C:\Program Files\LLVM" 在开始菜单中打开x64 Native Tools Command Prompt for VS 2019,输入以下命令配置环境变量,其中REM开头的命令为注释。 REM在C盘创建默认安装目录,确保至少有10GB可用空间。 MKDIRC:\Qt\Qt-5.15.0 REM在D盘创建编译目录以保护源码目录的整洁,确保至少120GB可用空间。 REM预留额外硬盘空间用于虚拟内存分配,确保虚拟+物理内存可用大于32G。 D: MKDIR D:\qt-build CD D:\qt-build REM 设置Qt源码目录和添加可执行文件搜索路径 SET QT_SRC=”D:\qt-everywhere-src-5.15.0” SET PATH=%QT_SRC%\qtbase\bin;%QT_SRC %\gnuwin32\bin;%PATH% REM 设置官方推荐配置所需环境变量 SET OPENSSL_INCLUDE_x64=”C:\Program Files\OpenSSL-Win64\include” SET OPENSSL_LIB_x64=”C:\Program Files\OpenSSL-Win64\lib” SETMYSQL_INCLUDE_x64=”D:\mysql-connector-c -6.1.11-winx64\include” SET MYSQL_LIB_x64=”D:\mysql-connector-c-6.1.11 -winx64\lib” SET POSTGRESQL_INCLUDE_x64=”D:\pgsql\include” SET POSTGRESQL_LIB_x64=”D:\pgsql\lib” REM开始配置,预计耗时两分钟。 REM原官方配置-prefix后跟c:\Users\qt\work\install,这里改成了更符合离线安装程序给出的默认安装位置。此外官方配置-no-sql-mysql表示不编译Mysql驱动,但又包括了Mysql的库文件(不包括也能编译),这里用-plugin-sql-mysql替换之以启用Mysql驱动。 %QT_SRC%\configure.bat -opensource -confirm -license -verbose -prefix? C:\Qt\Qt-5.15.0 -debug -and-release -release -force-debug-info -nomake tests -opengl dynamic -nomake examples -openssl -I %OPENSSL_INCLUDE_x64% -L % OPENSSL_LIB_x64%-plugin-sql-mysql -plugin-sql -sqlite -plugin-sql-odbc -I %MYSQL_INCLUDE_x64% -L %MYSQL_LIB_x64% -plugin-sql-psql -I % POSTGRESQL_INCLUDE_x64% -L %POSTGRESQL_LIB_x64% -qt-zlib 配置成功后,终端窗口会提示“Qt is now configured for building. Just run 'nmake'.”。 1.3.5 编译 编译会产生中间文件占用大量空间,若专门构建虚拟机来运行编译的话,建议至少分配200GB的硬盘空间以安装Windows系统、配置编译环境和虚拟内存。 配置成功的终端内运行如下命令开始编译,大约需要8小时: nmake 1.3.6 安装 确保安装目录(本例为C:\Qt\Qt-5.15.0)具有10GB可用空间,运行以下命令启动安装过程,大约需要15分钟: nmake install 2 Qt开发环境的配置 首先,启用编译安装的Qt库。启动Qt Creator,依次选择工具、选项、Kits下的Qt Versions,添加C:\Qt\Qt-5.15.0\bin目录下qmake.exe。 其次,启用MSVC 2019编译器。由于Qt Creator最新版本4.12.3存在缺陷,导致非英语显示语言环境下无法检测到安装的Visual Studio 2019 生成工具。此外,Qt Creator又不支持手动添加MSVC编译器,所以设置稍显麻烦。目前已核实两种方案均可解决此问题,一是卸载MSVC 2019生成工具,安装Visual Studio 2019社区版;二是切换系统显示语言为英语,重启电脑后遵循上述路径打开编译器选项卡,将自动检测到的编译工具(形如Microsoft Visual C++ Compiler 16.6.30225.117 (x86))一一按右侧clone按钮克隆一份(共八个),保存配置后改回中文显示语言并重启系统。 再次,设置默认编译组合Kits。遵循上述路径打开Kits选项卡,在Compiler一栏中C/C++选择MSVC amd64,Debugger一栏选择x64版本,Qt version一栏选择Qt 5.15.0,其余不动,保存即可。 最后,添加动态链接库搜索路径。修改系统环境变量Path,追加Qt库bin目录的路径(本例为C:\Qt\Qt-5.15.0\bin),以便系统在运行用户Qt程序时能够定位Qt动态链接库。此外,将编譯Qt库时通过解压获得的第三方动态库一并拷贝到Qt库bin目录下,具体到本例为MySQL中lib目录下的libmysql.dll,以及PostgreSQL中lib目录下的所有后缀名为dll的文件。 3 Qt开发环境的测试 打开Qt Creator,新建其他项目的empty qmake Project,键入项目名称HelloWorld,在打开的HelloWorld.pro文件中添加以下代码并保存: QT += widgets 然后,新建C++下的C++SourceFile,键入名称main.cpp,在打开的main.cpp文件中,输入以下程序代码[6],保存后按F5执行。 #include #include int main(int argc,char *argv[]) { QApplication app(argc,argv); QLabel label("HelloWorld"); label.show(); return app.exec(); } HelloWorld实验结果显示如图1,证明文中所述离线安装Qt的编译方法切实可行。 参考文献(References): [1] Tuukka Turunen. Changing Qt Account to be Optional in the Online Installer[EB/OL]. [2020-7-11].https://www.qt.io/blog/2015/05/06/changing-qt-account-to-be-optional-in-the-online-installer. [2] Petteri Holl?nder. Qt offering changes 2020[EB/OL].[2020-7-11].https://www.qt.io/blog/qt-offering-changes-2020. [3] 下载 Windows 版和 Mac 版 Visual Studio 2019[EB/OL].[2020-7-11].https://visualstudio.microsoft.com/zh-hans/downloads/. [4] Index of /official_releases[EB/OL]. [2020-7-11]. https://download.qt.io/official_releases/. [5] The Qt Company Ltd. Qt 5.15 Tools and Versions - Qt Wiki[EB/OL].[2020-7-2].https://wiki.qt.io/Qt_5.15_Tools_and_Versions. [6] 布兰切特.C++ GUI QT 4编程(第2版)[M].电子工业出版社,2013. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。