CMake presets
CMake Presets are a way to configure and share CMake options using two files:
CMakePresets.json for project-wise builds. This file can be shared via VCS.
CMakeUserPresets.json for developers' own local builds. This file should not be checked into VCS.
Both CMakePresets.json and CMakeUserPresets.json have the same format and should be located in the project's root directory.
note
CMake Profiles have many settings in common with CMake Presets and are also shareable via VCS. The major difference is that profiles reference CLion toolchains, which contain information that is not present and not needed in CMake presets (like the debugger or environment settings).
On project opening, CLion detects all build and configure presets in CMakePresets.json and CMakeUserPresets.json files under the project root and loads them automatically into the dedicated CMake profiles in read-only mode.
tip
In case you don't want the presets to be converted into CMake profiles automatically, go to Settings | Advanced Settings and clear the Enable CMake Presets integration checkbox. This will also delete the existing presets-based profiles upon the next CMake reload or project reopening.
To view the loaded presets, go to Settings | Build, Execution, Deployment | CMake or use the View link in the notification dialog:

All new presets are disabled by default, unless you have already loaded and enabled them before (CLion matches them by name).
All previously loaded presets are removed if they are not present in the CMakePresets.json or CMakeUserPresets.json files.

note
Presets loading is also triggered by the Reset Cache and Reload and Load CMake Project actions.
You can also load presets for an already opened project.
Call Help | Find Action (CtrlShift0A) and search for Load CMake Presets.
CLion will show a popup with a list of the existing build presets:
Select the preset and press Enter.
You can select several entries by holding Ctrl or Shift. CLion will load all the selected presets.
Similarly to the case of opening a project, the presets you load manually are imported into CMake profiles in read-only mode. You can find them in Settings | Build, Execution, Deployment | CMake.
Go to Settings | Build, Execution, Deployment | CMake.
Select the desired profile and set the Enable profile checkbox:
tip
To build your project with the enabled profile, select it in the configuration switcher and build
the configuration or call one of the available build actions. See Build with a profile.
There are two options you can use to edit the imported presets:
Go to Settings | Build, Execution, Deployment | CMake.
Select the desired profile and click
or press Ctrl/⌘ + D:
Adjust the settings in the copied profile:
Open and start editing the corresponding json file. CLion will track changes as you type and notify you about any errors in the Problems view:
When you change a preset file in the editor or modify it externally, you will get a notification suggesting to reload the changes:
Click Enable Auto-Reload if you prefer CLion to reload the changes silently. This sets the corresponding checkbox in the profiles settings:
By default, the loaded preset is linked to the default CLion toolchain.
To set one of the already configured toolchains, modify the vendor-specific field of the configure preset.
For example, use the following code to switch to a toolchain called Clang10:
"vendor": {
"jetbrains.com/clion": {
"toolchain": "Clang10"
}
}
As a result, the Clang10 toolchain will be assigned to the loaded preset:

On Windows, if you are working with the MSVC toolchain, the architecture and toolset properties from the configure preset will be fetched to CMake options as well:

Issues and nearest plans for CMake Presets support are listed as subtasks in this ticket: CPP-25018. The general parent task is CPP-22906.
Thanks for your feedback!