My personal favourite would be simply like this:
{
"version": 9,
"cmakeMinimumRequired": {
"major": 3,
"minor": 30,
"patch": 0
},
"include": [
"cmake/CMake${hostSystemName}Presets.json"
],
"buildPresets": [
{
"name": "debug",
"configurePreset": "debug",
"configuration": "Debug",
"targets": [
"install"
]
},
{
"name": "release",
"configurePreset": "release",
"configuration": "Release",
"targets": [
"all_verify_interface_header_sets",
"install"
]
}
],
"testPresets": [
{
"name": "test_base",
"hidden": true,
"output": {
"outputOnFailure": true
},
"execution": {
"noTestsAction": "error",
"stopOnFailure": false
}
},
{
"name": "debug",
"inherits": "test_base",
"configuration": "Debug",
"configurePreset": "debug"
},
{
"name": "release",
"inherits": "test_base",
"configuration": "Release",
"configurePreset": "release"
}
],
"packagePresets": [
{
"name": "release",
"configurePreset": "release",
"configurations": [
"Release"
],
"generators": [
"TGZ"
]
}
],
"workflowPresets": [
{
"name": "debug",
"steps": [
{
"type": "configure",
"name": "debug"
},
{
"type": "build",
"name": "debug"
},
{
"type": "test",
"name": "debug"
}
]
},
{
"name": "release",
"steps": [
{
"type": "configure",
"name": "release"
},
{
"type": "build",
"name": "release"
},
{
"type": "test",
"name": "release"
},
{
"type": "package",
"name": "release"
}
]
}
]
}