Qt 6.0中的主机开发平台和目标开发平台

Qt 6.0中的主机开发平台和目标开发平台
本文翻译自:Development hosts and targets in Qt 6.0
原文作者:Qt公司高级产品经理Santtu Ahonen
校审:Haipeng Yu


Qt 6中有大量更新,它们影响了主机OS和目标OS上的开发。影响最大的几项工作包括Qt与图形系统的集成(博文:Qt 6的技术概览),从C ++ 11到C ++ 17的C ++版本更新以及从QMake到CMake的过渡。我们还利用这次机会清理并重新组织了许多操作系统特定的代码(博文: Qt 6.0 feature freeze)。

 

Qt 6.0中的主机OS

与Qt 5版本类似,Qt 6.0将支持Windows,Linux和macOS等主机开发平台。对于RedHat Linux用户而言,最大的变化是CI系统平台从RedHat迁移到CentOS。对于Windows开发者,现在仅支持64位Windows 10作为主机。此外,还为了最新的操作系统版本进行了小幅更新(添加新版本、删除旧版本。)


以下是目前在我们CI和测试中计划支持的Qt 6.0开发主机列表:

  • Windows 10 2004(64位Intel; msvc2019或mingw81 / gcc8.1)
  • macOS 10.15(64位Intel; XCode 11)
  • Linux:

o    Ubuntu 20.04(64位Intel; gcc9)

o    CentOS 8.1(64位Intel; gcc9)

o    SLES 15(SUSE Linux Enterprise Server,64位Intel; gcc10)

o    Open SUSE 15.1(64位; gcc9)

 

其他操作系统和版本可能也运行良好,但上述操作系统和版本已经过我们CI和测试工作的验证。今后若要Qt技术支持接受客户提交的问题,则该问题必须能在这些受支持的主机之一上可复现,否则就需要针对特定客户的附加服务才能解决。


Qt 6.0支持的目标开发平台

为确保我们能专注于核心关键功能,我们限制了Qt 6.0的目标开发平台数量和这些目标平台上可用的特性和功能。这意味着将通过Qt 6.0、6.1和6.2逐步添加完目标平台(计划是确保Qt 6.2达到与Qt 5.15 LTS一致的对各种目标平台的支持水平。)

当然,上述所有主机开发平台也可以作为目标平台。此外,Windows 10 1809 64位以及macOS 10.14和11(又名10.16)发布后也可以作为目标平台。
嵌入式Linux的meta-qt6 layer是基于Yocto 3.1 Dunfell(和gcc9.3)开发的。Qt 6.0带了四个现成的Boot-2-Qt 镜像,用于基于ARM-v8A 64位(iMX8)和基于ARM-v7A 32位(iMX6)的设备。人们应该能够通过新的meta-qt6在各种硬件上获得Qt6支持,并且如果需要,Qt 专业服务团队也可随时提供帮助。稍后的博客文章将提供关于新meta-qt6的详细信息。

Qt 6.0将支持在iOS(13和14)Android(28 build-time, 21 runtime)移动目标平台上的开发。

 

Qt 5.15中未在Qt 6.0支持计划中的主机开发平台和目标平台

除了记录将要发生的更改,讲清楚那些不再支持或不再属于CI或测试工作的内容也很重要。

Qt 6将不支持Windows 7或8.x版本。微软前段时间停止了对这两个版本的支持,作为供应商,我们也将不再维持Qt 6对其的支持。Qt 5.15 LTS版本还支持Windows 7(32位和64位),Qt 5.12 LTS还支持Windows 8.1(32位和64位)。这意味着我们将不再支持32位Windows。此外,在Windows 10上Qt 6不再支持创建UWP应用程序。

由于关注度较低以及资源需求,Apple watchOS和tvOS均已从CI中删除。我们希望了解您是否有基于这些目标平台的项目。

Qt社区可能可以很好地维持对这些环境的支持。与往常一样,客户也有商业途径购买针对专用主机和目标平台的其他扩展支持。

 

计划用于6.x更高版本的主机开发平台和目标开发平台

Windows on ARM(即基于ARM的PC,而非基于Intel芯片、传统PC上的Windows)正在开发中(QTBUG-85820)。将其作为完成的主机和目标平台进行支持可能还需要时间,但初步目标是使Windows on ARM成为桌面应用程序的目标平台。


macOS on ARM的支持正在开发中 (QTBUG-85279),并计划在Qt 6.1中完成。这也涵盖将macOS作为主机开发平台。动手能力强的朋友可能发现Qt 6.0已做了大量工作。


新增加macOS成为嵌入式Linux目标平台的主机开发平台,这需要更改我们创建和维护交叉编译工具链的方式。我们计划使用容器来包含交叉编译工具链。目前,这项工作已分配到Qt 6.2(QTBUG-81947)中。同时这部分工作还将影响所有主机平台上实现嵌入式开发的目标支持方式。

对于Yocto Embedded Linux,我们将遵循Yocto路线图。Qt 5.15 meta-qt5与Yocto 3.0 Zeus一起使用,Qt 6.0 meta-qt6 layer与Yocto 3.1 Dunfell一起使用,并且看起来Qt 6.1将会迁移到Yocto 3.2 Gatesgarth。相应地,Qt 6.2最有可能与Yocto 3.3一起使用(取决于路线图的配合方式)。Yocto社区把3.1 Dunfell当作LTS发行版,因此我们可能还要重新研究当前的规划,确保与最新、最重大的发行版一起发布。Qt 6.1和6.2的在这个方面的规划仍然处于待定。


对Blackberry QNX和GreenHills INTEGRITY实时操作系统(RTOS)的支持在很大程度上取决于供应商对C ++ 17的编译器支持。当前计划是在Qt 6.1中提供技术预览(TP)级别的支持,并在Qt 6.2中提供全面的支持。在撰写此博文时,Windriver VxWorks时间表已发布。RTOS支持是一种特殊支持。Qt包含了针对特定硬件+ RTOS组合的参考实现,但是大多数客户都会对平台产品进行定制。因此,我们通常建议在这方面寻求Qt专业服务的全面支持。

最后,WebAssembly(又名WASM)将在Qt 6.1回归。

 

JIRA罗列了详细计划 —— 期待您的反馈

您可以在JIRA中的Epics下追踪详细的计划和进度:

期待您的反馈,意见和贡献!

 

已标记关键词 清除标记