Qt Creator 20 における CMake の変更点をご紹介します。
CMakePresets Kit のリファクタリング
Kit の生成
Qt Creator は Qt Creator 9 から CMakePresets をサポートしていましたが、一つ課題がありました。CMakePresets 用に生成された Kit がグローバルであったため、複数のプロジェクトで CMakePresets を使用するとグローバル Kit が増え続け、ユーザーが手動でクリーンアップする必要がありました。
Qt Creator 20 では、プロジェクト名 : プリセット名 という命名規則を採用することで、CMakePresets Kit を一時的かつプロジェクト固有にし、この問題を解決しています。
コンパイラーと Qt ベンダー拡張
CMake プリセットのコンパイラーは、CMAKE_CXX_COMPILER および CMAKE_C_COMPILER CMake 変数、または CC と CXX 環境変数で指定できます。Qt バージョンについては、toolchainFile 変数で qt.toolchain.cmake ファイルを指定するか、CMAKE_PREFIX_PATH または QT_QMAKE_EXECUTABLE CMake 変数を設定する方法があります。
Qt Creator 20 では、vendor/qt.io/QtCreator/1.0 キー配下の qt、compiler/cxx、compiler/c サブキーを使って、これらの変数を直接指定できるようになりました。これは Qt Creator 14 で debugger が導入された方法と同様です。
なお、Qt、コンパイラー、デバッガーは一時的なものとしてマークされます。
エラー報告
以前は、Kit が Qt バージョンまたはコンパイラーバージョンを見つけられなかった場合、問題を確認するには QT_LOGGING_RULES=qtc.cmake.import*=true を使用するしかありませんでした。
Qt Creator 20 では、障害の詳細を含む問題が表示されるようになりました。
再読み込み
CMakePresets.json または CMakeUserPresets.json を保存すると、Build > Reload CMake Presets アクションが自動的にトリガーされます。
find_package 依存プロバイダー
Qt のコンポーネントには他の Qt コンポーネントに依存するものがありますが、この依存関係は Qt SDK によって自動的には処理されていませんでした。
例えば、Qt SerialBus は SerialPort に依存しています。
Qt Creator 20 では、find_package(Qt6 COMPONENTS SerialBus) を使用した際に、Qt SerialPort も合わせて提示されるようになりました。