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”或者掃描下方二維碼即可加入
