このページでは

CMake プリセット

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

cmake-presets(7)で説明されている形式でプリセットファイルを作成し、プロジェクトのルートディレクトリに保存します。プリセットファイルはProjectsビューで見ることができます。

Qt Creator は、バージョン 5 (CMake 3.24 で導入) までのconfigurebuildtestプリセットをサポートしますが、バージョンチェックは行いません。もし存在すれば、バージョン 5 のすべてのフィールドを読み込んで使用します。

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

CMakeプリセットを持つプロジェクトを開く

プリセットは、Initial Configuration フィールドと、その下の環境設定フィールドで確認できます。

CMake環境設定

CMakePresets.json ファイルの変更を更新するには、Build に移動し、Reload CMake Presets を選択してから、読み込むプリセットファイルを選択します。

プリセットの設定

以下のconfigureプリセットは、プラットフォーム上のデフォルトのジェネレーターを使用し、すべてのビルドタイプのビルドディレクトリを指定するようにCMakeに指示します。NOT_COMMON_VALUE は、環境設定フィールドのInitial ParametersAN_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 プロジェクト設定の詳細については、CMake Qt Vendor Presets を参照してください。

MinGWの例

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

  • MinGWコンパイラー
  • ビルドディレクトリ<sourceDir>/build-release
  • ビルドタイプ -CMAKE_BUILD_TYPE asRelease
  • ジェネレーター - MinGW Makefiles
  • 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_COMPILERCMAKE_CXX_COMPILER を指定します。

debugger 環境設定のいくつかの可能な値については、CMake Qt Vendor Presets を参照してください。

忍者ジェネレーターの例

次の configure および build プリセットは、Ninja Multi-Config をジェネレーターとして設定し、DebugRelease のビルドステップを追加し、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 コンパイラーを使用する場合、architecturetoolset フィールドに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"
}

クロスコンパイルの例

以下の例では、Qt プロジェクトを macOS 上で Windows 用にクロスコンパイルし、macOS 上のwine エミュレータで実行するように設定します:

  • ジェネレータ - Ninja
  • ビルドディレクトリ<sourceDir>/build-release
  • LLVM/MinGW ツールチェーン
  • コンフィギュレーションタイプ -CMAKE_BUILD_TYPE asRelease
  • 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"
          }
        }
      }
    }
  ]
}

使用条件

以下のconfigureプリセットは、condition に一致する場合に使用されます。つまり、hostSystemNameLinux に等しい場合は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 Build ConfigurationCMakeCMake Qt Vendor Presets、およびSDK Toolも参照してください

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.