Qt Creator 17 の新しい CMake の変更点については、この投稿で説明しています。
Qt Creator は、パッケージマネージャーの自動設定機能の一部として、find_package() 依存関係プロバイダを実装しています。
この依存関係プロバイダは、必要な Qt コンポーネントのすべての find_package() CMake 呼び出しをチェックします。Qt コンポーネントがインストールされていない場合、Qt Maintenance Tool が起動して、必要なコンポーネントをインストールします。
Qt Multimedia がインストールされていないシステムで Dice サンプルを設定した場合のセットアップを以下に示します。
デフォルトでは、Qt Maintenance Tool は GUI モードで起動されます。
QT_CREATOR_MAINTENANCE_TOOL_PROVIDER_USE_CLIをONに設定すると、Qt Maintenance Tool の CLI モードが使用されます。このモードでは、ユーザーに確認せずにコンポーネントがインストールされます。
インストールされた Qt コンポーネントの C++ ヘッダーを使用する場合、ビルドシステムの設定が不足しているため利用できない場合、Qt Creator は、ビルドシステムに必要な設定を追加する fix-it を発行します。
Qt Multimedia と CMake の場合、これは次のように相当します。
find_package(Qt6 REQUIRED COMPONENTS Multimedia) target_link_libraries(WidgetsDemo PRIVATE Qt6::Multimedia)
以下の Android CMake プリセットを例に説明します。
{ "version": 4, "cmakeMinimumRequired": { "major": 3, "minor": 23, "patch": 0 }, "configurePresets": [ { "name": "android-clang-arm64", "displayName": "Android Clang Arm64", "binaryDir": "${sourceDir}/build-${presetName}", "generator" : "Ninja", "cacheVariables": { "QT_HOST_PATH" : "C:/QtArm64/6.8.3/msvc2022_arm64", "CMAKE_PREFIX_PATH" : "C:/QtArm64/6.8.3/android_arm64_v8a", "CMAKE_FIND_ROOT_PATH" : "C:/QtArm64/6.8.3/android_arm64_v8a", "ANDROID_PLATFORM" : "android-31", "ANDROID_STL": "c++_shared", "ANDROID_ABI" : "arm64-v8a", "ANDROID_SDK_ROOT": "C:/Tools/Android/Sdk", "ANDROID_NDK" : "C:/Tools/Android/Sdk/ndk/26.1.10909125", "CMAKE_TOOLCHAIN_FILE": "C:/Tools/Android/Sdk/ndk/26.1.10909125/build/cmake/android.toolchain.cmake" } } ] }
プロジェクトを構成すると、出来上がるのキットの Run device にAndroidデバイスが選択されます。
今回は、%{Project:Name} Qt Creator マクロについてです。以前の Qt Creator バージョンでは、プロジェクト名はプロジェクトファイル名の一部ではないため、親プロジェクトディレクトリが %{Project:Name} として設定されていました。すべてのプロジェクトファイルは CMakeLists.txt という名前で、qmake の project.pro とは異なります。
Qt Creator 17では、project() CMake関数呼び出しの後にCMakeLists.txtを解析し、その結果を%{ProjectName}に使用します。