本稿は「A Collection of References and Hints about Porting from Qt 5 to Qt 6」の抄訳です。
Qt 5.15 のサポート終了と Qt 6.5 のリリースが近づくにつれ、既存の Qt 5 ベースのコードベースを Qt 6 に移植することへの関心が高まっています。Qtユーザーから、さらなるヒントを得たい、他の人がどのようにこの道を歩んできたかを知りたいという質問をよく聞きます。ちょっと見てみましょう。
まず、Qt 6への移植に労力がかかることは周知の事実でした。Qt 6 はメジャーリリースです。Qt 側では、Qt ドキュメントに Porting to Qt 6 という専用ページを用意し、この問題に対処しています。このブログ記事を読み終わったら、まずこのページをご覧ください。この Qt ドキュメントのページには、関連する必読のリンクがいくつかあります。
次に読むべきは What's New in Qt 6.0 ページで、Qt 6 の変更点全般に関連する他の参考文献が含まれています。
Qt 6 の導入は大規模な作業でした。私たちは最も重要な変更をなるべく迅速に導入し、残りは将来のリリースで取り組むことにしました。Qt 6.2 は Qt 6 世代における次の主要な機能リリースであり、利用可能なモジュールや機能の面で Qt 5 とのギャップのほとんどを埋めるものでした。詳細は What's New in Qt 6.2 ページを参照してください。モジュールの変更点に関する専用ページはここにあり、Qt 6 への移植ガイドにも記載されています。
Qt 6の導入は大規模な作業でした。私たちはできるだけ早く必要な変更を導入し、残りの部分は今後のバージョンで取り組むことにしました。Qt 6.2は、利用可能なモジュールと機能の面でQt 5とのギャップをほぼ埋めた、Qt 6世代で次に重要な機能リリースでした。詳細については、「Qt 6.2の新機能」を参照してください。モジュールの変更に関する専用のページはこちらにあり、移植ガイド Porting to Qt 6 でも言及されています。
ウェブ上の古い情報源では、Qt 5 のモジュールの多くを Qt 6 に含める必要があると書かれていることがあります。このほとんどは Qt 6.0 のスコープに関連するもので、現在ではそうではありません。しかし、Qt 5 に 100% マッチさせることは、Qt 6 の多くの進歩を妨げることになるため、昔も今も不可能です。Qt 6 はより多くの機能を実現するために設計されており、Qt 5 とはあちこちで異なっています。Qt6 の最新情報ページ What's new in Qt6 を定期的にお読みください。
さらに、移植を容易にする Qt 5 Core Compatibility API があります。このブログ記事で紹介しています。
Qt 5 で qmake を使用されていた場合、Qt 6 への移植時に CMake への切り替えを強くお勧めします。qmake は Qt 6 でも利用可能でサポートされていますが、追加機能や改善点はすべて CMake ビルドツールチェイン用に作られています。QtのドキュメントにQt6でCMakeを使用するためのガイドがあります。最初のステップとして、qmake2cmake ユーティリティも提供しています。このユーティリティはqmakeプロジェクトファイルからCMakeファイルへの基本的な変換を行います。ツールの紹介はこのブログ記事をご覧ください。Qt World Summit 2021 での、CMake の共同メンテナである Craig Scott による講演 Developing Qt6 Projects with CMake にも興味があるかもしれません。Qt World Summit 2022 では、The Qt Company のビルドチームのリーダーである Jörg Bornemann が、Migrating from qmake to CMake という講演を行いました。 そこではいくつかの詳細を述べ、qmake2cmake ユーティリティが本来できないことについて議論しています。
最後に、コミュニティのブログ記事やその他の情報がいくつかあります。
Witekio のウェビナー録画:How to Successfully Migrate to Qt6
BasysKom のブログ記事:Porting a Qt5 application to Qt6
Jens Weller 氏による Meeting C++ の記事:Porting my first Application from Qt5 to Qt6
KDAB によるブログ記事 QList changes in Qt6 及び関連ビデオ Qt Container in Qt 5 and Qt 6 - Sequence Containers: QList and QVector
KDE の Akademy 2021 における Kai Köhne のプレゼンテーション:Porting User Applications to Qt 6
KDAB の QtDevCon22 における Nicolas Fella の講演:KDE's Journey to Qt6
上記のブログ記事を読んだり、ビデオを見たりする際、特定の Qt 6 バージョンに言及している場合は、公開された日付に注意してください。本記事を投稿をする現在、Qt for Python 6.5 を含む Qt 6.5 がリリースされています。時間的には、これは Qt 6.0 の後に 4 つの機能リリースがあり、2 年が経過したことを意味します。全体として、Qt は Qt をより進化させるために努力しており、Qt 6.5 では、より長く使えるように、安定化と品質向上のために、いくつかの献身的な努力が払われました。
Qtでより少ないコードで、より多く作成しましょう。そして、Qt 6とともに、さらに多くのことを実現しましょう。 😎