Qt官方在 Clazy 框架中实施了一些检查和修复,以帮助您将应用程序从 Qt 5 移植到 Qt 6。用他们自己的话说:“Clazy 是一个编译器插件,它允许 clang 理解 Qt 语义”。获取 Clazy ( https://invent.kde.org/sdk/clazy ) 并继续阅读以更顺畅地移植到 Qt 6。
下载Qt6最新试用版
Qt开发工具推荐:
- QtitanRibbon|: 遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
- QtitanChart :是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。并且支持所有主要的桌面操作系
Clazy 检查可以在编译期间作为插件运行,也可以使用clazy-standalone. 稍后会应用修复程序,使用clang-apply-replacements.
专用于 Qt 6 移植的 Clazy 检查
以下检查专门用于简化从 Qt 5 到 Qt 6 的移植。
- qt6-deprecated-api-fixes
- qt6-header-fixes
- qt6-qhash-signature
- qt6-qlatin1stringchar-to-u
- qt6-fwd-fixes
检查必须针对 Qt 5 运行。固定代码只会针对 Qt 6 进行编译。因此,必须一次性运行上述检查。Clazy 建议一次运行一个测试以避免在应用修复时发生冲突,但是当将这些检查作为插件运行时,这不是一个选项。
如何应用 Clazy 检查
如何设置您的项目以与 Clazy 一起运行以及如何选择和应用检查在这里有完整的解释:https://invent.kde.org/sdk/clazy#setting-up-your-project-to-build-with-clazy。
如果您不想将检查作为插件运行,而是通过 JSON 编译数据库运行,则需要使用clazy-standalone. 有关说明,请参阅https://invent.kde.org/sdk/clazy#clazy-standalone-and-json-database-support。
简而言之,假设您安装了最新的 Clazy 版本,下面将解释作为插件运行检查所需的操作。
设置您的项目以与 Clazy 一起运行。
如果使用 qmake
根据您的操作系统的需要,将以下行添加到您的 qmake 命令中:
-spec linux-clang QMAKE_CXX="clazy"
-spec macx-clang QMAKE_CXX="clazy"
对于带有 MSVC 的 Windows,添加QMAKE_CXX="clazy-cl.bat".
运行 qmake。
如果使用 CMake
添加:--DCMAKE_CXX_COMPILER=clazy到 cmake 命令。
运行 cmake。
选择检查:
export CLAZY_CHECKS="qt6-deprecated-api-fixes, qt6-header-fixes,
qt6-qhash-signature, qt6-qlatin1stringchar-to-u, qt6-fwd-fixes"
启用修复:
export CLAZY_EXPORT_FIXES=ON
设置 Clazy 忽略的目录:
export CLAZY_IGNORE_DIRS=.*lib_dir.*
这将阻止对库文件运行 Clazy 检查。如果库的路径包含在-Iand-F而不是-isystemand 中,则这是必要的-framework。qt-header-fixes如果触发检查的头文件包含在包含的库文件中,这对于避免检查警告也是必要的。
编译你的代码。
在编译期间.yaml,在源文件旁边创建文件。
要应用 fixits,请运行:
clang-apply-replacements <path_to_yaml_files>
这将修改源文件,考虑备份您的代码。
并非所有移植都可以通过自动修复来完成。对于必须手动更改的代码,请仔细查看编译期间的警告。
有关 Qt 6 的更多信息
- Qt6.2版本发布:恢复Qt6.1版本中缺失的模块、并带来了对13个额外模块的支持
- C++跨平台框架Qt6第一个修复版本现已发布!
- c++开发框架Qt6:构建系统CMake详解
- Qt6.1教程:Qt Quick3D渲染实例
- 全面剖析Qt6新版构建系统CMake
- Qt里程碑事件——Qt6正式发布
====================================================
Qt技术交流群现已开通,QQ搜索群号“765444821”或者扫描下方二维码即可加入