天天看點

如何使用 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?

繼續閱讀