CMakeのプリセット
CMakePresets.json にはプロジェクト全体のビルドに関するオプションが用意されていますが、CMakeUserPresets.json にはローカルビルドに関するオプションが用意されています。
CMake: cmake-presets(7)に記載されている形式でプリセットファイルを作成し、プロジェクトのルートディレクトリに保存してください。そうすれば、[Projects] ビューでそれらを確認できます。
Qt Creator は、バージョン 10 までのconfigure、build、およびtestプリセットをサポートしていますが(CMake 3.31 で導入)、バージョンチェックを強制するわけではありません。バージョン 10 のフィールドが存在する場合、それらをすべて読み込んで使用します。
プロジェクトを初めて開いたとき、CMakeLists.txt.user ファイルが存在しない場合、またはプロジェクト内のすべてのキットが無効になっている場合に、プリセットをインポートできます。

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

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 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_COMPILER およびCMAKE_CXX_COMPILER を指定してください。
debugger の設定項目の一部について、可能な値については、CMakeQt Creator のベンダープリセットを参照してください。
Ninja ジェネレータの例
以下の configure および build プリセットでは、ジェネレータとして 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 - デバッガとしてxml-ph-0000@deepl.internal
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.