開發(fā)者討論將 Qt 5 代碼移植到 Qt 6 的工具
Qt 是一個(gè)跨平臺(tái)的C++圖形用戶界面應(yīng)用程序框架。它提供給開發(fā)者建立圖形用戶界面所需的功能,廣泛用于開發(fā)GUI程序,也可用于開發(fā)非GUI程序。Qt是完全面向?qū)ο蟮?,很容易擴(kuò)展,并且允許真正地組件編程。
雖然 Qt 作為開源項(xiàng)目的未來還不太清楚,但現(xiàn)在看來一切都在順利推進(jìn)中。Qt 開發(fā)團(tuán)隊(duì)的郵件列表顯示他們正在討論一個(gè)將 Qt 5 代碼移植到 Qt 6 的工具。此工具基于 Clang,可幫助開發(fā)者自動(dòng)將所有 Qt 5 語法轉(zhuǎn)換為與 Qt 6 兼容。
如果這個(gè)工具能夠在很大程度上將大多數(shù) Qt 5 代碼轉(zhuǎn)換為 Qt 6 兼容的用法,那么它就可以極大地幫助提升 Qt 6 的采用率。
Qt 公司的 Vitaly Fanaskov 認(rèn)為官方應(yīng)該提供基于 Clang 的工具,將用戶的代碼庫(半)自動(dòng)移植到新版本的 Qt 上。這些工具可能還需要具備對(duì)代碼進(jìn)行修復(fù)的功能,或者至少在可能存在問題的地方添加一個(gè)注釋,以便用戶對(duì)代碼進(jìn)行修正。修改 API 的開發(fā)者也應(yīng)該為這些工具實(shí)現(xiàn)一個(gè)規(guī)則。當(dāng)然也需要稍微調(diào)整一下 API 設(shè)計(jì)指南。
如果確實(shí)能夠(半)自動(dòng)將 Qt 5 代碼轉(zhuǎn)換為 Qt 6 代碼,或者至少降低編碼的門檻,這無疑是一個(gè)有趣的概念。LLVM/Clang 已經(jīng)被用于自動(dòng)代碼格式化、代碼翻譯和其他創(chuàng)新用例,所以這并非不可能的事情。但目前還沒有人真正寫出這個(gè)實(shí)用程序,也不清楚 Qt 公司自己是否打算這么做。
反對(duì)這個(gè)提議的觀點(diǎn)是,Clang 無法編譯所有使用 Qt 的代碼庫,所以它不能通用,而且這種轉(zhuǎn)換代碼也還沒有被寫出來。除此之外,自動(dòng)生成的代碼也往往不如手寫的代碼好。Qt 6 將在2020年年底首次亮相,這個(gè)提議是否會(huì)被采用,又能否提升 Qt 6 的采用率,不妨拭目以待。