如果您正在寻求从 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 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 中存在冲突,则会通知您,并且不会进行任何修改。
相关主题 |