Qt Creator 17 - CMake 更新

本稿は「Qt Creator 17 - CMake Update」の抄訳です。
 

Qt Creator 17 の新しい CMake の変更点については、この投稿で説明しています。

find_package 依存関係プロバイダ

Qt Creator は、パッケージマネージャーの自動設定機能の一部として、find_package() 依存関係プロバイダを実装しています。

この依存関係プロバイダは、必要な Qt コンポーネントのすべての find_package() CMake 呼び出しをチェックします。Qt コンポーネントがインストールされていない場合、Qt Maintenance Tool が起動して、必要なコンポーネントをインストールします。

Qt Multimedia がインストールされていないシステムで Dice サンプルを設定した場合のセットアップを以下に示します。

qt-creator-17-cmake-find-package-dependency

デフォルトでは、Qt Maintenance Tool は GUI モードで起動されます。

QT_CREATOR_MAINTENANCE_TOOL_PROVIDER_USE_CLIONに設定すると、Qt Maintenance Tool の CLI モードが使用されます。このモードでは、ユーザーに確認せずにコンポーネントがインストールされます。

Qt CMake コンポーネントのセットアップ

インストールされた Qt コンポーネントの C++ ヘッダーを使用する場合、ビルドシステムの設定が不足しているため利用できない場合、Qt Creator は、ビルドシステムに必要な設定を追加する fix-it を発行します。

Qt Multimedia と CMake の場合、これは次のように相当します。

find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(WidgetsDemo PRIVATE Qt6::Multimedia)

qt-creator-17-cmake-add-qt-component

適切なRun deviceを含む CMake プリセットキット

以下の 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デバイスが選択されます。

qt-creator-17-android-preset-kit

QMake プロジェクトとの機能同等の向上

今回は、%{Project:Name} Qt Creator マクロについてです。以前の Qt Creator バージョンでは、プロジェクト名はプロジェクトファイル名の一部ではないため、親プロジェクトディレクトリが %{Project:Name} として設定されていました。すべてのプロジェクトファイルは CMakeLists.txt という名前で、qmake の project.pro とは異なります。

Qt Creator 17では、project() CMake関数呼び出しの後にCMakeLists.txtを解析し、その結果を%{ProjectName}に使用します。

qt-creator-17-project-name

 


Blog Topics:

Comments