天天看点

如何使用 Clazy 检查将 C++ 应用程序移植到 Qt 6?

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 的更多信息

  1. Qt6.2版本发布:恢复Qt6.1版本中缺失的模块、并带来了对13个额外模块的支持
  2. C++跨平台框架Qt6第一个修复版本现已发布!
  3. c++开发框架Qt6:构建系统CMake详解
  4. Qt6.1教程:Qt Quick3D渲染实例
  5. 全面剖析Qt6新版构建系统CMake
  6. Qt里程碑事件——Qt6正式发布

====================================================

Qt技术交流群现已开通,QQ搜索群号“765444821”或者扫描下方二维码即可加入

如何使用 Clazy 检查将 C++ 应用程序移植到 Qt 6?

继续阅读