云网牛站
所在位置:首页 > Linux新闻 > 如果要从Qt 5移植到Qt 6,请使用Qt推出的Clazy框架,附介绍

如果要从Qt 5移植到Qt 6,请使用Qt推出的Clazy框架,附介绍

2021-03-03 10:02:01作者:御坂弟弟稿源:OSCHINA开源站

如果您正在寻求从 Qt 5 移植到 Qt 6 的帮助,可以使用 Qt 官方推出的 Clazy 框架,在 Clazy 框架内,我们实现了一些检查和修复,专门用于帮助您移植基于 Qt 的项目。以下是相关的介绍。

 

前言

当前,Qt 推出了 Clazy 框架,专门用于帮助项目从 Qt 5 移植到 Qt 6。该框架包含一些检查,这些检查可以使用 Clazy 作为编译器插件运行,也可以在 .json 文件上使用 Clazy standalone 或从 Qt Creator 内部运行。

官方说明:使用 Clazy 框架从 Qt 5 移植到 Qt 6(地址:https://www.qt.io/blog/porting-from-qt-5-to-qt-6-using-clazy-checks)。

如果要从Qt 5移植到Qt 6,请使用Qt推出的Clazy框架,附介绍

参考:介绍Qt 6版本的技术看点,包括相比Qt 5的技术改进

 

下面是专用于 Qt 6 移植的 Clazy 检查说明

1、qt6-deprecated-api-fixes。Qt 5.15 中已弃用的 API 已从 Qt 6 中删除。该检查会发现这些 API,并根据 API 来决定是否提供一个替换。

2、qt6-header-fixes。从Qt 5到 Qt 6,一些头文件被移动了。这个检查将用 Qt 6 的路径替换过时的路径。

3、qt6-qhash-signature。这项检查纠正了 qHash、qHashBits、qHashRange 和 qHashRangeCommutative 的签名。

4、qt6-fwd-fixes。该检查警告 <QtCoreqcontainerfwd.h> 中存在的前向声明。如果 <QtCoreqcontainerfwd.h> 中还没有包含前向声明,则会被删除,取而代之的是 <QtCoreqcontainerfwd.h>。

5、missing-qobject-macro。这个检查可以找到没有 Q_OBJECT 宏的 QObject 派生类。

 

说明

如果要使用所有专门用于 Qt 6 移植的 Clazy 检查,用户需要拥有 Qt Creator 14.4.1 或以上版本。在 Qt Creator 中打开项目后,用户需要在分析过程中选择要运行的 Clazy 检查。另外,在 Qt Creator 中,修复程序之间的冲突不会被警告,因此要注意当应用与同一行上发生的不同检查相关的修复程序。

 

附:使用 Clazy 作为插件运行移植检查

首先,您需要获取 Clazy 或确保您的版本是最新的。1.10 版将包含对已弃用的 API 修复程序的更正检查,与此同时,请使用 master 分支。

然后,您需要设置要与 Clazy 一起运行的项目。

如果您使用的是 qmake,请根据您的操作系统,在命令行中添加以下内容:

-spec linux-clang QMAKE_CXX="clazy"

-spec macx-clang QMAKE_CXX="clazy"

对于带有 MSVC 的 Windows,添加:

QMAKE_CXX="clazy-cl.bat".

如果使用 cmake,请添加:

--DCMAKE_CXX_COMPILER=clazy

到您的命令行。

要仅启用与 Qt 6 移植相关的检查,请使用 CLAZY_CHECKS:

export CLAZY_CHECKS="qt6-deprecated-api-fixes, qt6-header-fixes,

qt6-qhash-signature, qt6-fwd-fixes, 

missing-qobject-macro"

要启用修复程序:

export CLAZY_EXPORT_FIXES=ON

还要设置 Clazy 忽略的目录:

export CLAZY_IGNORE_DIRS=.*lib_dir.*

这将防止对库文件运行 Clazy 检查。

运行 qmake 或 cmake,然后编译您的项目。对于每个源文件,<source_file_name>.clazy.yaml 文件在源文件位置创建。它包含检查结果的摘要以及 fixits 的说明,包括源文件及其包含的头文件。

要应用修订包,请在项目目录的路径上运行 clang-apply-replacements。这样做会修改源文件和头文件,请考虑备份您的代码。如果 fixit 中存在冲突,则会通知您,并且不会进行任何修改。

 

相关主题

Qt 6.0发布下载,附Qt 6新功能和主要变化介绍

精选文章
热门文章