このページでは

CMakeのプリセット

CMakePresets.json にはプロジェクト全体のビルドに関するオプションがあり、CMakeUserPresets.json にはローカルビルドに関するオプションがあります。

CMake: cmake-presets(7)に記載されている形式でプリセットファイルを作成し、プロジェクトのルートディレクトリに保存してください。そうすれば、[Projects] ビューでそれらを確認できます。

Qt Creator は、バージョン 10 までの(CMake 3.31 で導入された)configure、build、およびtestプリセットをサポートしていますが、バージョンチェックを強制するわけではありません。バージョン 10 のフィールドが存在する場合、それらをすべて読み込んで使用します。

プロジェクトを初めて開いたとき、CMakeLists.txt.user ファイルが存在しない場合、またはプロジェクト内のすべてのキットを無効にしている場合に、プリセットをインポートできます。

CMakeのプリセットが含まれているプロジェクトを開く

プリセットは、「Initial Configuration 」フィールドおよびその下にある環境設定フィールドで確認できます。

CMakeの環境設定

Qt Creator は、CMakePresets.json プリセットファイルの変更を監視します。ファイルの変更を手動で反映させるには、[Build] に移動し、[Reload CMake Presets] を選択して、読み込むプリセットファイルを選択します。

プリセットの設定

以下のプリセット設定により、CMake に対してプラットフォームのデフォルトジェネレータを使用するよう指示し、すべてのビルドタイプに対するビルドディレクトリを指定します。「NOT_COMMON_VALUE 」は、Initial Parameters に表示され、「AN_ENVIRONMENT_FLAG 」は環境設定フィールドに表示されます。

{
  "version": 1,
  "configurePresets": [
    {
      "name": "preset",
      "displayName": "preset",
      "binaryDir": "${sourceDir}/build/preset",
      "cacheVariables": {
        "NOT_COMMON_VALUE": "NOT_COMMON_VALUE"
        },
      "environment": {
        "AN_ENVIRONMENT_FLAG": "1"
        }
      },
      "vendor": {
        "qt.io/QtCreator/1.0": {
           "AskBeforePresetsReload": false,
           "AskReConfigureInitialParams": false,
           "AutorunCMake": false,
           "PackageManagerAutoSetup": false,
           "ShowAdvancedOptionsByDefault": true,
           "ShowSourceSubFolders": false,
           "UseJunctionsForSourceAndBuildDirectories": true
           }
      }
  ]
}

「vendor 」セクションの CMake プロジェクト設定の詳細については、「CMakeQt Creator ベンダープリセット」を参照してください。

MinGW の例

次の例では、Qt プロジェクトを次のように設定します。

  • MinGW コンパイラ
  • ビルドディレクトリ –<sourceDir>/build-release
  • ビルドタイプ – 「CMAKE_BUILD_TYPE 」としてRelease
  • ジェネレータ – MinGW Makefile
  • CMake実行ファイルへのパス
  • Qtのインストール先へのパス(以下経由)CMAKE_PREFIX_PATH
  • MinGW 11.2.0 64ビット用 GNU gdb 11.2.0 デバッガ
{
  "version": 1,
  "configurePresets": [
    {
      "name": "mingw",
      "displayName": "MinGW 11.2.0",
      "generator": "MinGW Makefiles",
      "binaryDir": "${sourceDir}/build-release",
      "cmakeExecutable": "C:/Qt/Tools/CMake_64/bin/cmake.exe",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "CMAKE_PREFIX_PATH": "C:/Qt/6.4.0/mingw_64"
      },
      "environment": {
        "PATH": "C:/Qt/Tools/mingw1120_64/bin;$penv{PATH}"
      },
      "vendor": {
        "qt.io/QtCreator/1.0": {
          "debugger": {
            "DisplayName": "GNU gdb 11.2.0 for MinGW 11.2.0 64-bit",
            "Abis": ["x86-windows-msys-pe-64bit"],
            "Binary": "C:/Qt/Tools/mingw1120_64/bin/gdb.exe",
            "EngineType": 1,
            "Version": "11.2.0"
          }
        }
      }
  ]
}

Windows での処理を高速化するには、cacheVariables セクションでCMAKE_C_COMPILER およびCMAKE_CXX_COMPILER を指定してください。

debugger の設定項目の一部について、可能な値については、CMakeQt Creator のベンダープリセットを参照してください。

Ninja ジェネレータの例

以下の configure およびビルドプリセットでは、ジェネレータとして Ninja Multi-Config を設定し、Debug およびRelease のビルドステップを追加し、CMAKE_MAKE_PROGRAM 変数の値としてninja.exe へのパスを指定しています:

{
  "version": 2,
  "configurePresets": [
    {
      "name": "ninja-nmc",
      "displayName": "Ninja Multi-Config MinGW",
      "generator": "Ninja Multi-Config",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_CONFIGURATION_TYPES": "Debug;Release",
        "CMAKE_PREFIX_PATH": "C:/Qt/6.4.0/mingw_64",
        "CMAKE_MAKE_PROGRAM": "C:/Qt/Tools/Ninja/ninja.exe"
      },
      "environment": {
        "PATH": "c:/Qt/Tools/mingw1120_64/bin;$penv{PATH}"
      }
    }
  ],
  "buildPresets": [
    {
      "name": "release",
      "displayName": "Ninja Release",
      "configurePreset": "ninja-nmc",
      "configuration": "Release"
    },
    {
      "name": "debug",
      "displayName": "Ninja Debug",
      "configurePreset": "ninja-nmc",
      "configuration": "Debug"
    }
  ]
}

この例では、CMake 実行ファイルのパスがPreferences >CMake >Tools に設定されていることを前提としています。

MSVC の例

NMAKE Makefile、Ninja、またはNinja Multi-ConfigジェネレータでMSVCコンパイラを使用する場合、architecture およびtoolset フィールドにexternal 戦略を指定できます。これにより、Qt Creator がCMakeを呼び出す前にVisual C++環境を設定できるようになります。

例:

"generator": "Ninja Multi-Config",
"toolset": {
  "value": "v142,host=x64",
  "strategy": "external"
},
"architecture": {
  "value": "x64",
  "strategy": "external"
},

非VSジェネレータでMSVCコンパイラを使用し、PATH に複数のコンパイラが登録されている場合、cacheVariables またはenvironmentVariables で使用するコンパイラを指定する必要がある場合があります:

"generator": "Ninja Multi-Config",
"toolset": {
  "value": "v142,host=x64",
  "strategy": "external"
},
"architecture": {
  "value": "x64",
  "strategy": "external"
},
"cacheVariables": {
  "CMAKE_C_COMPILER": "cl.exe",
  "CMAKE_CXX_COMPILER": "cl.exe"
}

クロスコンパイルの例

以下の例は、macOS上でWindows向けのクロスコンパイルを行い、macOS上のwine エミュレータで実行するためのQtプロジェクトの設定例です:

  • ジェネレータ – Ninja
  • ビルドディレクトリ –<sourceDir>/build-release
  • LLVM/MinGW ツールチェーン
  • 構成タイプ –CMAKE_BUILD_TYPE としてRelease
  • LLDB 18.1.6 デバッガー
  • wine エミュレータ
{
  "version": 4,
  "configurePresets": [
    {
      "name": "llvm-mingw",
      "displayName": "LLVM-MinGW 18.1.6",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build-release",
      "toolchainFile": "llvm-mingw.cmake",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "CMAKE_CROSSCOMPILING_EMULATOR": "/opt/homebrew/bin/wine"
      },
      "vendor": {
        "qt.io/QtCreator/1.0": {
          "debugger": {
            "DisplayName": "LLDB 18.1.6 (CMake Preset)",
            "Abis": ["x86-darwin-generic-mach_o-64bit", "arm-darwin-generic-mach_o-64bit"],
            "Binary": "/Users/jdoe/llvm-mingw/bin/lldb",
            "EngineType": 256,
            "Version": "18.1.6"
          }
        }
      }
    }
  ]
}

使用条件

condition と一致する場合、以下の configure プリセットが使用されます。つまり、hostSystemName がLinux に等しい場合はlinux プリセットが使用され、Windows に等しい場合はwindows プリセットが使用されます。

{
  "version": 3,
  "configurePresets": [
    {
      "name": "linux",
      "displayName": "Linux GCC",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_PREFIX_PATH": "$env{HOME}/Qt/6.4.0/gcc_64"
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Linux"
      }
    },
    {
      "name": "windows",
      "displayName": "Windows MSVC",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_PREFIX_PATH": "$env{SYSTEMDRIVE}/Qt/6.4.0/msvc2019_64"
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      }
    }
  ]
}

テストプリセット

以下のテストプリセットは、テストの実行が失敗した場合にテストプログラムの出力を表示して実行を停止するよう CMake に指示するとともに、テストが見つからない場合はエラーを表示するようにします。

{
  "version": 3,
  "testPresets": [
  {
    "name": "default",
    "configurePreset": "default",
    "output": {"outputOnFailure": true},
    "execution": {"noTestsAction": "error", "stopOnFailure": true}
    }
  ],
}

関連項目 :「CMake を使用したビルド方法」、「 CMake によるプロジェクトのビルド」、「CMake」、「CMakeQt Creator ベンダープリセット」、および「SDK ツール」。

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.