什么是QT跨平台解决方案

Qt是完整的软件开发框架

image

Qt框架包含一整套高度直观和模块化的C++库类,并加载了API以简化您的应用程序开发。Qt生成高度可读、易于维护和可重用的代码,具有较高的运行时性能和较小的占用空间——而且它是跨平台的。

关于Qt Group

image

Qt Group(纳斯达克赫尔辛基股票代码:QTCOM)是一家全球软件公司,在70多个行业拥有强大的影响力,是数百万设备和应用程序背后的领先独立技术。Qt被全球主要的跨国公司和开发人员使用,该技术使其客户能够提供卓越的用户体验并推进他们的数字化转型计划。Qt通过其跨平台软件框架实现了这一点,该框架用于在商业和开源许可下开发应用程序和设备。

image

全球大约有100万开发人员使用Qt技术。我们支持跨所有操作系统、平台和屏幕类型的单一软件代码,从台式机和嵌入式系统到关键业务应用程序、车载系统、可穿戴设备和连接到物联网的移动设备。

价值观

  • 创新

    • 我们的技术源于创新
    • 我们使客户的创新产品开发成为可能
    • 我们大胆思考,力求持续改进
  • 透明度

    • 我们的产品开发和商业模式基于透明、信任和开放
    • 我们的目标和沟通是透明的
    • 我们的效率基于我们工作方式中的分享、关怀和透明度。
  • 合作

    • 协作是我们所做的一切的中心
    • 我们是客户的战略合作伙伴,帮助他们创建一流的解决方案
    • 我们在我们的社区中实现协作
    • 我们一起培养学习、分享和发现

QT核心优势

当今的消费者需要并期待更快、更直观的用户体验以及更现代、更可靠和响应更快的用户界面。由于世界各地的人们已经习惯了他们的智能手机设定的高基准,人们的期望很高。

image

我们Qt已帮助70多个行业的客户开发世界一流的桌面、嵌入式和移动操作系统产品。全球最重要的公司使用Qt创建医疗、车载系统和工业自动化设备。为什么?

  • 缩短上市时间:影响上市时间的关键因素是实际产品开发时间以及监管和合规时间框架。Qt的各种库和工具集让您的软件团队能够更快地开发。开发人员可以专注于创造最佳用户体验,而不是编码已经为您编码的内容。使用Qt,原型设计–开发–测试–部署的循环更快、更高效。Qt还通过我们的内部资源或行业领先的合作伙伴网络支持您的监管和合规工作。

  • 可扩展的解决方案:Qt是一个跨平台的框架,兼容多种操作系统和硬件。您所需要的只是编写一次源代码,并能够将其部署在您需要的任何地方。您不需要专门针对不同硬件架构或操作系统进行编码的开发团队。

  • 更低的总拥有成本(TCO):所需的资源更少,上市时间更快,这意味着更低的总拥有成本和更快的收入确认。

代码少,创造更多,到处部署。

QT公司历史

2017年,Qt Group Plc筹集了1500万欧元的股权以资助增长投资

image

组织权利发行以加速增长。Qt Group的目标是通过增加自己的运营地点和零售商的数量来扩大其销售网络。公司自己的运营地点的计划是覆盖公司最大的地域市场。

该公司还希望在选定的行业中开发产品。通过引入额外的行业特定解决方案和集成,公司可以提供更好的价值并增加市场份额和收入。

2016年,Qt Group Plc从Digia分拆,并在赫尔辛基纳斯达克独立上市

image

Digia Plc.正在分拆,因此与Digia的Qt业务相关的所有资产、负债和责任都转移到了一家名为Qt Group Plc.的新公司。分拆实施后,Qt Group Plc.成为一家独立的上市公司。其股票自2016年5月2日起在纳斯达克赫尔辛基有限公司公开交易。Qt集团股票的交易代码为QTCOM。

2014年,Qt公司在Digia成为自己的实体

image

从2014年初开始,Digia根据Qt和国内两个业务部门报告其数据。Qt部门包括公司的国际Qt软件业务。

2012年,Digia从诺基亚手中收购Qt软件技术和业务

image

Digia Plc.与诺基亚签署协议,从诺基亚收购Qt软件技术和Qt业务。收购后,Digia负责之前由诺基亚开展的所有Qt活动,包括研发、商业和开源许可和服务业务。

2011年,Digia从诺基亚手中收购了Qt商业授权业务

image

2011年3月,Digia Plc.与诺基亚公司签署协议,收购Qt商业许可和服务业务。Digia的目标是扩大和发展收购的产品业务,特别是提供产品化支持服务来补充产品,以及基于客户需求的额外功能。该业务交易支持Digia的战略目标,即增加来自国际产品业务的营业额。

2008年,奇趣科技(Trolltech)被诺基亚(Nokia)收购

image

2008年6月,诺基亚宣布已完成对Trolltech ASA (OSE:Troll)的收购,后者是一家拥有世界一流软件开发平台和框架的公认软件供应商。此次收购使诺基亚能够加快移动设备和桌面应用程序的跨平台软件战略,并发展其互联网服务业务。奥斯陆证券交易所将Trolltech ASA退市,上市的最后一天是2008年6月17日。

image

诺基亚给QT增加了LGPL(GNU Lesser General Public License)的授权模式。诺基亚联合英特尔利用Qt开发了全新的智能手机系统MeeGo,后面诺基亚被微软收购,被迫放弃了MeeGo

2006年,奇趣科技(Trolltech)首次公开募股到奥斯陆交易所

image

奇趣科技(Trolltech) 提供跨平台的软件开发框架和应用平台。Trolltech的产品使公司能够在各种操作系统和电子设备上轻松构建和部署软件。该公司为桌面和嵌入式应用程序提供商以及消费电子和移动供应商提供服务,他们在提供用户友好和差异化的软件方面面临挑战。

1995年,Qt框架第一个公开版本由奇趣科技(Trolltech)发布

image

1995年,Qt框架由两位挪威软件工程师Haavard Nord和Eirik Chambe-Eng开发,于1995年5月首次公开发布。Qt的第一个公开版本由名为奇趣科技(Trolltech)的公司发布。

QT的应用

1997年,Qt被用来开发Linux桌面环境KDE,大获成功,使Qt成为Linux环境下开发C++ GUI程序的事实标准

使用Qt开发:

WPS、YY语音、Skype、豆瓣电台、虾米音乐、淘宝助理、千牛、暴雪的战网客户端、Virtual Box、Opera、咪咕音乐、Google Earth、Adobe Photoshop Album、Autodesk Maya、Skype等。

QML与C++

Qt 4时代的主流就是传统部件(或叫控件)编程,所用的语言一般是C++。Qt 5诞生之时,正是手机移动设备蓬勃发展的时候。

为了适应手机移动应用开发,Qt5将QML脚本编程提到与传统C++部件编程相同的高度,力推QML界面编程,当然QML主要用于手机移动应用程序。QML包含大量使用手机移动设备的功能模块,比如基本部件(Qt Quick模块)、GPS定位、渲染特效、蓝牙、NFC、WebkKit等等。

QML类似于网页设计的HTML,是一种标记语言,我们可以借助CSS对它进行美化,也可以借助JavaScript进行交互。有Web开发经验的读者学习QML将非常轻松。

使用QML开发界面主要有以下几个优点:

  • QML非常灵活,可以做出非常炫酷的效果,例如QQ、360、迅雷等都不在话下。
  • QML是标记语言,见名知意,非常容易编写和阅读,大大提高了开发和维护效率。
  • QML界面简洁大气,有很多动画,适合移动端。
  • 不同平台下的QML使用相同的渲染机制,界面效果一致,不会随操作系统的不同而变化。

QML只能用来进行界面设计和人机交互,也就是只能胜任UI部分,在底层仍然需要调用C++编写的组件来完善功能,比如访问数据库、网络通信、多线程多进程、文件读写、图像处理、音频视频处理等都离不开C++。

QT提供的工具链

a. 设计工具 - Qt Design Studio

https://www.qt.io/product/ui-design-tools

设计令人惊叹的用户界面和终极用户体验所需的一切。

使用预设的UI组件定义从线框到最终实现的UI外观。将UI设计文件从2D和3D工具导入Qt Design Studio,Qt Design Studio可以将它们转换为代码供开发人员使用。Qt Design Studio原型制作功能使您的设计栩栩如生,并模拟和验证交互和动态行为。您可以在桌面或目标设备上实时测试、预览和微调您的设计以达到像素完美。

image

b. 开发工具 - Qt Creator

https://www.qt.io/product/development-tools

Qt拥有自己的跨平台IDE,并且充满了专为一次性开发应用程序和UI并跨多个操作系统部署它们而设计的工具。

Qt Creator是一个集成开发环境(IDE),它为您提供了使用Qt应用程序框架设计和开发应用程序的工具。Qt旨在一次性开发应用程序和用户界面,然后将它们部署到多个桌面、嵌入式和移动操作系统或Web浏览器(实验性)。Qt Creator为您提供了在整个应用程序开发生命周期中完成任务的工具,从创建项目到将应用程序部署到目标平台。

image

Qt 6.2 LTSC

QT版本一览

https://wiki.qt.io/Portal:Quick_Access

版本 状态 新特性
Qt 6.2 Long Term Support Release New Features in Qt 6.2
Qt 6.1 Standard Support New Features in Qt 6.1
Qt 6.0 Standard Support New Features in Qt 6.0
Qt 5.15 Long Term Support Release New Features in Qt 5.15
Qt 5.12 Long Term Support Release New Features in Qt 5.12
Qt 4.8.7 End-of-Life (as of December 2015) N/A

https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.2.0/release-note.md

我很高兴地宣布Qt 6.2的正式发布。它是自我们开始迈向全新Qt主要版本以来,一直在努力的版本。Qt 6.2得益于我们为Qt6所做的所有架构升级,并包含了Qt 5.15中几乎所有深受喜爱的附加模块。

image

Qt 6.2也是Qt公司为商业版客户提供的Qt6系列中第一个长周期支持版。

在我们升级到Qt6的计划中,我们首先关注Qt的核心,为了能在未来几年保持竞争力而做了架构级别的改变。但这一投入也意味着我们必须在发布Qt6.0时对所支持的附加模块做出妥协。因此,尽管Qt6.0比Qt 5.15更好、更先进,但它确实缺乏Qt 5.15提供的某些功能。在Qt 6.2中,我们缩小了差距,并包含了Qt 5.15中的所有常用功能以及为Qt6添加的新功能。

随着Qt 6.2的发布,几乎所有Qt用户都应能将其代码从Qt5迁移到Qt6。我们已将自己的工具实现了迁移。也就是说,QtDesignStudio2.2和即将发布的QtCreator6beta版都基于Qt 6.2长周期支持版。

除了增加缺失的功能外,Qt 6.2还专注于提高稳定性、性能和开发者的生活质量。

Qt 6中架构级别的更改

我们对Qt 6进行了一些更广泛的架构更改,并以此构建Qt 6.2以及未来版本。这些变化包括

  • 利用C++ 17 开发Qt 6时,我们希望建立在现代C++标准之上。C++ 17是当时的最新版本,而Qt 6现在依赖于C++ 17兼容编译器。这使得我们可以清理和改进我们的代码库,并能为用户提供更现代的API。
  • 在处理大型数据集和性能方面改进了低级容器类
  • 下一代QML 我们已开始更努力地更新QML语言,使其更安全、更易用。Qt 6.0–6.2奠定了基础,但这种努力将在整个Qt 6系列中继续。
  • 将属性绑定引入C++ 属性绑定是使QML取得成功的概念之一。在Qt 6中,我们已经在C++中实现了这个概念。
  • 新的图形架构 Qt 6在如何处理与底层操作系统的API集成方面采用了全新的架构。由于新的渲染硬件接口(RHI),Qt 6现在默认使用每个系统上可用的最佳图形API,显著提高了兼容性,尤其是在桌面和移动操作系统(如Windows和macOS以及iOS)上。
  • Qt Quick统一的2D和3D, Qt Quick一直是构建动画和流畅2D用户界面的框架。我们在Qt 6中还简化了将3D内容集成到基于QML的应用程序流程。深度集成使得在任何级别混合2D和3D内容都变得很容易,同时获得系统的最大性能。
  • CMake构建系统 从Qt 6开始,我们将构建系统从qmake改为cmake,这是当今基于C++应用程序的标准构建系统。虽然我们仍将在Qt 6整个生命周期内支持qmake,但初步用户报告表明切换到cmake后有显着改进。

Qt 6添加的模块

https://doc.qt.io/qt-6/qtmodules.html

开发Qt 6.2的主要工作之一是重新添加我们在Qt 6.0中遗漏的所有模块和功能。除了极少数例外,Qt 5.15支持的所有模块现在也在Qt 6.2中得到支持。

在Qt 6.2中,我们添加了对以下模块的支持(在Qt 6.1中已有的模块之上):

  • Qt Bluetooth
  • Qt Multimedia
  • Qt NFC
  • Qt Positioning
  • Qt Quick Dialogs
  • Qt RemoteObjects
  • Qt Sensors
  • Qt SerialBus
  • Qt SerialPort
  • Qt WebChannel
  • Qt WebEngine
  • Qt WebSockets
  • Qt WebView

这些模块的API主要向后兼容Qt 5,并且在移植到Qt 6时只需要对用户代码进行微调。

Qt 6.2中的新功能

https://wiki.qt.io/New_Features_in_Qt_6.2

a. Qt Quick 3D

Qt Quick 3D得到了一些很酷的新功能,现在支持实例化渲染,允许您用不同变换渲染大量相同的对象。我们还添加了一个用于向场景添加3D微粒效果的API。

输入处理已得到改进,我们现在可以为嵌入在3D场景中的2D项目正确创建Qt Quick输入事件。我们还添加了一个从场景任意点进行基于光线的拾取的API。

b. QML工具

https://qt-china.blog.csdn.net/article/details/120552464

Qt 6.2对QML工具进行了较大改进。我们现在有一个公共CMake API,它极大地简化了创建您自己QML模块的过程。

QML linter(qmlint)是一种工具,用于检查QML源代码的最佳实践、潜在的编码和性能问题,并帮助编写更易于维护的QML。该工具经历了巨变,现在可以通过配置文件在命令行级别进行完全配置,甚至可以对QML文件本身中的单个块进行配置。此外,它现在可以生成JSON输出以简化与其他工具或自动化系统的集成。

image

QML格式化程序(qmlformat)现在使用QML dom库,大大改进了生成的输出。

c. Qt Multimedia

https://qt-china.blog.csdn.net/article/details/120235422

Qt Multimedia在Qt 6中经历了巨大变化。它是我们在Qt5生命周期中不满意的API之一。因此,我们退后一步,对模块做了一些更广泛的API和架构更改,而没太考虑向后兼容性。

image

尽管如此,从Qt 5中的Qt Multimedia移植到Qt6应该相对简单。

Qt 6中的Qt Multimedia确实支持一些我们从未在Qt5中正确支持且被多次要求增加的功能,包括支持字幕、回放时的语言选择以及可配置的媒体捕获设置。

内部架构已经过清理,不再像Qt5那样通过公共API公开。这使我们能够更快地修复bug,并且使添加新功能变得更加容易。您可以在Qt 6中的Qt Multimedia模块一文中找到更多详细信息。

然而,由于这些巨大的变化,该模块在实现中可能存在相当多的bugs。但是,我们相信多媒体是必不可少的一项功能,将在Qt 6.2中完全支持该模块。

因此,我们将在补丁级版本的常规提交策略上有所偏离,如果需要修复较大的问题,可能会添加一些较小的API。

此外,在即将发布的补丁级版本中,我们将尽快努力修复任何报告的错误。

d. 较小的一些改进

几乎所有其他模块都有许多较小的API添加和改进。

我们移植了许多API来利用新的属性系统,以便您使用C++中的属性绑定。这项工作尚未完成,我们将在未来的版本中继续。

我们还修复了许多API缺点和不同地方缺失的功能。仅举几个例子:

  • Qt Charts增加了提高便利性并方便定制的新API。
  • 为QImage添加了浮点图像格式。
  • QByteArray::number()现在可以正确处理不等于10基数的负值。
  • QLockFile现在具有采用std::chrono的重载
  • Qt Network支持多个可以在运行时共存的SSL后端。

Qt 6.2对新平台的支持

image

我们在Qt 6.2上做了很多工作来改进对当前支持平台的支持,包括台式机和移动端,例如,改进我们对HighDPI渲染的支持和在iOS上添加NFC后端。

除此以外,Qt 6.2大幅扩展了支持平台的范围:

Qt 6.2完全支持Apple Silicon上的macOS。Qt现在可以轻松创建通用二进制文件,并在Intel和Apple Silicon上为macOS进行开发。当然,该版本也在我们的CI系统中进行了全面测试。Qt应用程序一贯能在Apple芯片的Rosetta层上运行,但Qt 6.2现在全面支持在Apple原生芯片上运行。

Qt 6.2还恢复了对INTEGRITY和QNX实时操作系统的支持。支持需要C++17工具链和最新版本的操作系统。QNX的最低要求是7.1版,在INTEGRITY上,我们支持19.0.13版。

针对Qt 6.2的webOS验证也已完成,以进一步加强Qt对webOS的承诺。

支持Windows 11的工作正在进行中,我们希望能够在6.2补丁级版本中为其提供全面支持。Qt6.2还提供了对ARM硬件上的Windows的技术预览版支持。

最后,我们改进了对WebAssembly的支持,在Qt 6.2中以技术预览版发布。

从Qt 5迁移到Qt 6.2指南

https://doc.qt.io/qt-6/portingguide.html

在开发Qt 6时,与Qt 5的源代码兼容性一直是我们工作的关键部分。有时我们不得不在某种程度上打破这种兼容性,以进行必要的架构更改,或为我们带来巨大的性能优势。

image

在大多数情况下,从Qt 5移植到Qt 6应该很简单。Qt 6移植指南列举了所需的步骤,并提供了更多信息。您还可以从我们的合作伙伴或我们的顾问获得移植帮助。

移植到Qt 6的典型步骤是:

  • 检查您是否使用了受支持的编译器和平台版本
  • 首先在Qt 6模式下使用Qt 5.15编译(使用QT_DISABLE_DEPRECATED_BEFORE宏)
  • 然后用Qt 6.x编译——如果需要,在移植阶段利用兼容性模块

有了这些,您就可以在Qt 6上运行应用程序,并可以开始使用它提供的所有新特性和功能。例如,如果您的应用程序使用QML,请运行qmlint工具,并修复它给出的警告。

获取QT

获取QT 6.2.x(在线安装)

a. Windows版在线安装器

https://www.qt.io/download-thank-you?os=windows

  • Qt Online-Installer-Windows x86-online.exe From 官方镜像
  • Qt Online-Installer-Windows x86-online.exe From 清华镜像
  • Qt Online-Installer-Windows x86-online.exe From 上海交大
  • Qt Online-Installer-Windows x86-online.exe From 中国科大

b. MacOS版在线安装器

https://www.qt.io/download-thank-you?os=macos

  • Qt Online-Installer-MacOS x64-online.dmg From 官方镜像
  • Qt Online-Installer-MacOS x64-online.dmg From 清华镜像
  • Qt Online-Installer-MacOS x64-online.dmg From 上海交大
  • Qt Online-Installer-MacOS x64-online.dmg From 中国科大

c. Linux版在线安装器

https://www.qt.io/download-thank-you?os=linux

  • Qt Online-Installer-Linux x64-online.run From 官方镜像
  • Qt Online-Installer-Linux x64-online.run From 清华镜像
  • Qt Online-Installer-Linux x64-online.run From 上海交大
  • Qt Online-Installer-Linux x64-online.run From 中国科大

获取QT 6.2.1(离线源码)

QT从开源版本的v5.15开始不再直接提供编译好的离线安装包,而是直接提供源码,需要下载后自行编译。

Due to The Qt Company offering changes, open source offline installers are not available any more since Qt 5.15

a. Windows版离线源码包

https://download.qt.io/official_releases/qt/6.2/6.2.1/single/qt-everywhere-src-6.2.1.zip.mirrorlist

  • Qt Offline-Src-Package v6.2.1.zip From 官方镜像
  • Qt Offline-Src-Package v6.2.1.zip From 清华镜像
  • Qt Offline-Src-Package v6.2.1.zip From 上海交大
  • Qt Offline-Src-Package v6.2.1.zip From 中国科大

b. MacOS/Linux版离线源码包

https://download.qt.io/official_releases/qt/6.2/6.2.1/single/qt-everywhere-src-6.2.1.tar.xz.mirrorlist

  • Qt Offline-Src-Package v6.2.1.tar.xz From 官方镜像
  • Qt Offline-Src-Package v6.2.1.tar.xz From 清华镜像
  • Qt Offline-Src-Package v6.2.1.tar.xz From 上海交大
  • Qt Offline-Src-Package v6.2.1.tar.xz From 中国科大

获取QT 5.15.2(离线源码)

QT v5.15.x版本是目前市场上占比最高的一个版本。

a. Windows版离线源码包

https://download.qt.io/official_releases/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.zip.mirrorlist

  • Qt Offline-Src-Package v5.15.2.zip From 官方镜像
  • Qt Offline-Src-Package v5.15.2.zip From 清华镜像
  • Qt Offline-Src-Package v5.15.2.zip From 上海交大
  • Qt Offline-Src-Package v5.15.2.zip From 中国科大

b. MacOS/Linux版离线源码包

https://download.qt.io/official_releases/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz.mirrorlist

  • Qt Offline-Src-Package v5.15.2.tar.xz From 官方镜像
  • Qt Offline-Src-Package v5.15.2.tar.xz From 清华镜像
  • Qt Offline-Src-Package v5.15.2.tar.xz From 上海交大
  • Qt Offline-Src-Package v5.15.2.tar.xz From 中国科大

获取QT 5.14.2(离线安装)

Qt v5.14.2是开源版本里面最后一个提供编译后离线安装包的版本。

a. Windows版离线安装包

  • Qt Offline-Installer-Windows v5.14.2.exe From 官方镜像
  • Qt Offline-Installer-Windows v5.14.2.exe From 清华镜像
  • Qt Offline-Installer-Windows v5.14.2.exe From 上海交大
  • Qt Offline-Installer-Windows v5.14.2.exe From 中国科大

b. MacOS版离线安装包

  • Qt Offline-Installer-MacOS v5.14.2.dmg From 官方镜像
  • Qt Offline-Installer-MacOS v5.14.2.dmg From 清华镜像
  • Qt Offline-Installer-MacOS v5.14.2.dmg From 上海交大
  • Qt Offline-Installer-MacOS v5.14.2.dmg From 中国科大

c. Linux版离线安装包

  • Qt Offline-Installer-Linux v5.14.2.run From 官方镜像
  • Qt Offline-Installer-Linux v5.14.2.run From 清华镜像
  • Qt Offline-Installer-Linux v5.14.2.run From 上海交大
  • Qt Offline-Installer-Linux v5.14.2.run From 中国科大

历史版本资源

https://download.qt.io/archive/qt/

手动编译QT Windows版

https://doc.qt.io/qt-6/windows-building.html

1. 下载Windows版源包

先根据前面的地址下载好Windows版源包,这里先以Qt Offline-Src-Package v5.15.2.zip From 上海交大为例,体积962MB,下载后解压到D:\TempSpace\Qt\src目录,这里根据你的情况来放置,不易路径过长,路径中也不要出现特殊符号和中文为佳。

image

image

这个zip包做了压缩,而且里面文件其实非常多,解压的时候需要点耐心哈。

image

解压后,磁盘空间占用还是挺大的,足足有3.17GB。

image

2. 准备编译环境CMake(必选)

https://cmake.org

CMake(Cross platform Make)是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不相依于某特定编译器。

要求必须安装好CMake的v3.16及其以上版本,这里介绍两种安装方式

a. 通过CMake官网下载安装

https://cmake.org/download/

  • cmake-3.22.0-rc2-windows-x86_64.msi

image

记得勾选"Add CMake to the system PATH for all Users"这个选项,它会在安装后帮你把CMake添加到系统的环境变量里面。

image

安装后,CMake的所在位置位于:C:\Program Files\CMake\

image

b. 通过Winget搜索CMake下载安装

winget install Kitware.CMake

image

默认情况,它安装时会帮你把CMake添加到系统的环境变量里面,无需手动再操作了,不过需要重启Windows终端才可以生效。

c. 检查CMake是否正确安装

不出意外的,通过检查系统的PATH我们发现,CMake的安装运行目录已经被加入了,这很好,按道理命令行能正确识别它了。

image

cmake --version

image

3. 准备编译环境Ninja(可选)

https://ninja-build.org

Ninja是Google的一名程序员推出的注重速度的构建工具,一般在Unix/Linux上的程序通过make/makefile来构建编译,而Ninja通过将编译任务并行组织,大大提高了构建速度。

Ninja是一个小型的构建系统,专注于速度。它在两个主要方面不同于其他构建系统:它旨在由更高级别的构建系统生成其输入文件,并且它被设计为尽可能快地运行构建。

a. 通过Ninja官网下载安装

https://github.com/ninja-build/ninja/releases

  • ninja-v1.10.2-win.zip

下载后得到一个ninja.exe文件,把它找到位置安放好。

image

通过系统的搜索功能直接搜索"环境变量"这个关键词,进入环境变量的设置界面。

image

ninja.exe的所在的目录位置加到系统环境变量的PATH里面即可。

image

重新打开一次Windows终端,这时候就能识别ninja命令了。

ninja --version

image

4. 准备编译环境Perl编译器(必选)

a. 什么是Perl

https://www.perl.org

image

Perl,是英文全称"Practical Extraction and Report Language"的简称,中文名为"实用报表提取语言",它是一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建到大规模可扩展开发。

Perl特别适合系统管理和Web编程。实际上已经被用在所有Unix(包括Linux)捆绑在一起作为标准部件发布,同时也用于Microsoft Windows和几乎所有操作系统。其在Windows上两大著名的编译器分别是:"ActiveState Perl"、"Strawberry Perl"。

b. 安装ActiveState Perl(可选)

ActiveState提供免费的社区版本和商业支持的用于Win32的Perl和用于Win64的Perl的二进制发行版。

https://www.activestate.com/products/perl/

powershell -Command "& $([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate.com/dl/cli/pdli01/install.ps1'))) -activate-default ActiveState-Labs/Perl-5.32"

或者通过Winget安装

winget install 'ActiveState.ActivePerl'

c. 安装Strawberry Perl(推荐)

https://strawberryperl.com

适用于Windows的100%开源Perl,与其他地方的Perl完全相同;这包括使用来自CPAN的模块,而不需要二进制包。

image

Strawberry Perl是MS Windows的perl环境,包含运行和开发perl应用程序所需的一切。它旨在尽可能接近UNIX系统上的perl环境。它包括perl二进制文件、编译器(gcc)+相关工具、所有外部库(加密、数学、图形、xml...)、所有捆绑的数据库客户端和所有您对Strawberry Perl的期望。

  • strawberry-perl-5.32.1.1-64bit.msi

或者通过Winget安装

winget install 'StrawberryPerl.StrawberryPerl'

image

d. 通过Cygwin附带安装Perl(可选)

Cygwin是一个在Windows平台上运行的类UNIX模拟环境,在一些芯片开发场景下,开发人员并不使用IDE(集成开发环境),也不使用Linux,而是使用在Windows下的Cygwin环境去Makefile。

https://www.cygwin.com

在Cygwin中已经安装了基础的perl。

  • Cygwin Setup-x86_64.exe

e. 验证Perl安装

不出意外的,通过检查系统的PATH我们发现,Strawberry Perl的安装运行目录已经被加入了,这很好,按道理命令行能正确识别它了。

image

重启一次Windows终端来查看下,发现它已经可以正常工作了。

perl --version

image

参考

  • QT - wikipedia
  • About Us
  • Qt is the complete software development framework
  • Products & Features
  • Qt Design Studio - User Interface (UI) Design Tools for Applications
  • Qt Creator - A Cross-platform IDE for Application Development
  • 翻译 | Qt 6.2 长周期版正式发布
  • 清华大学开源软件镜像站-qt-online installers
  • Qt6在线安装图文步骤
  • Qt6.2发布(含项目代码升级到Qt6吐血经验总结)
  • 历时八年,Qt6正式版现已发布为什么没人关注?
  • 如何评价Qt6弃用qmake,全面转向CMake?
  • Qt下载(多种下载通道+所有版本)
  • Welcome to the Qt wiki
  • 清华大学开源软件镜像站
  • 上海交通大学软件源镜像服务
  • 中国科学技术大学开源软件镜像服务
  • 中国互联网络信息中心镜像服务
  • https://download.qt.io/static/mirrorlist/
  • https://mirrorbrain.org
  • Qt是什么?Qt简介(非常全面)
  • Windows上使用CMake
  • windows下cmake的安装与环境变量配置教程
  • Ninja构建系统入门
  • Ninja安装和基本使用
  • CMake 入门实战
  • Perl 教程
  • Perl 和 StrawberryPerl 与 ActivePerl 有什么区别
  • https://www.cygwin.com/
  • Windows Cygwin环境搭建
  • windows下git内置了perl?
  • https://strawberryperl.com

更多文章请关注《万象专栏》