{
  "version": 2,
  "cmakeMinimumRequired": {
    "major": 3,
    "minor": 20,
    "patch": 0
  },
  "configurePresets": [
    {
      "name": "default_debug",
      "displayName": "Default Debug Config",
      "description": "Default Debug build using Ninja generator",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build/default_debug",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug"
      }
    },
    {
      "name": "msvc_2022_debug",
      "displayName": "Default MSVC x64 Debug Config(VS2022)",
      "description": "Default MSVC x64 Debug build",
      "generator": "Visual Studio 17 2022",
      "architecture": { "value": "x64" },
      "binaryDir": "${sourceDir}/build/Debug",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_C_COMPILER": "cl",
        "CMAKE_CXX_COMPILER": "cl"
      }
    },
    {
      "name": "msvc_2022_release",
      "displayName": "Default MSVC x64 Release Config(VS2022)",
      "description": "Default MSVC x64 Release build",
      "generator": "Visual Studio 17 2022",
      "architecture": { "value": "x64" },
      "binaryDir": "${sourceDir}/build/Release",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "CMAKE_C_COMPILER": "cl",
        "CMAKE_CXX_COMPILER": "cl"
      }
    },
    {
      "name": "msvc_2022_relwithdebinfo",
      "displayName": "Default MSVC x64 RelWithDebInfo Config(VS2022)",
      "description": "Default MSVC x64 RelWithDebInfo build",
      "generator": "Visual Studio 17 2022",
      "architecture": { "value": "x64" },
      "binaryDir": "${sourceDir}/build/RelWithDebInfo",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "RelWithDebInfo",
        "CMAKE_C_COMPILER": "cl",
        "CMAKE_CXX_COMPILER": "cl"
      }
    },
    {
      "name": "msvc_2022_minsizerel",
      "displayName": "Default MSVC x64 MinSizeRel Config(VS2022)",
      "description": "Default MSVC x64 MinSizeRel build",
      "generator": "Visual Studio 17 2022",
      "architecture": { "value": "x64" },
      "binaryDir": "${sourceDir}/build/MinSizeRel",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "MinSizeRel",
        "CMAKE_C_COMPILER": "cl",
        "CMAKE_CXX_COMPILER": "cl"
      }
    },
    {
      "name": "msvc_2019_debug",
      "displayName": "Default MSVC x64 Debug Config(VS2019)",
      "description": "Default MSVC x64 Debug build",
      "generator": "Visual Studio 16 2019",
      "architecture": { "value": "x64" },
      "binaryDir": "${sourceDir}/build/Debug",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_C_COMPILER": "cl",
        "CMAKE_CXX_COMPILER": "cl"
      }
    },
    {
      "name": "msvc_2019_release",
      "displayName": "Default MSVC x64 Release Config(VS2019)",
      "description": "Default MSVC x64 Release build",
      "generator": "Visual Studio 16 2019",
      "architecture": { "value": "x64" },
      "binaryDir": "${sourceDir}/build/Release",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "CMAKE_C_COMPILER": "cl",
        "CMAKE_CXX_COMPILER": "cl"
      }
    },
    {
      "name": "msvc_2019_relwithdebinfo",
      "displayName": "Default MSVC x64 RelWithDebInfo Config(VS2019)",
      "description": "Default MSVC x64 RelWithDebInfo build",
      "generator": "Visual Studio 17 2019",
      "architecture": { "value": "x64" },
      "binaryDir": "${sourceDir}/build/RelWithDebInfo",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "RelWithDebInfo",
        "CMAKE_C_COMPILER": "cl",
        "CMAKE_CXX_COMPILER": "cl"
      }
    },
    {
      "name": "msvc_2019_minsizerel",
      "displayName": "Default MSVC x64 MinSizeRel Config(VS2019)",
      "description": "Default MSVC x64 MinSizeRel build",
      "generator": "Visual Studio 16 2019",
      "architecture": { "value": "x64" },
      "binaryDir": "${sourceDir}/build/MinSizeRel",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "MinSizeRel",
        "CMAKE_C_COMPILER": "cl",
        "CMAKE_CXX_COMPILER": "cl"
      }
    },
    {
      "name": "ninja-multi",
      "inherits": "default_debug",
      "displayName": "Ninja Multi-Config",
      "description": "Default build using Ninja Multi-Config generator",
      "generator": "Ninja Multi-Config"
    }
  ],
  "buildPresets": [
    {
      "name": "default_debug",
      "configurePreset": "default_debug",
      "jobs":  8
    },
    {
      "name": "msvc_2022_debug",
      "displayName": "Debug",
      "configurePreset": "msvc_2022_debug",
      "jobs":  8,
      "configuration": "Debug"
    },
    {
      "name": "msvc_2022_release",
      "displayName": "Release",
      "configurePreset": "msvc_2022_release",
      "jobs":  8,
      "configuration": "Release"
    },
    {
      "name": "msvc_2022_relwithdebinfo",
      "displayName": "RelWithDebInfo",
      "configurePreset": "msvc_2022_relwithdebinfo",
      "jobs":  8,
      "configuration": "RelWithDebInfo"
    },
    {
      "name": "msvc_2022_minsizerel",
      "displayName": "MinSizeRel",
      "configurePreset": "msvc_2022_minsizerel",
      "jobs":  8,
      "configuration": "MinSizeRel"
    },
    {
      "name": "msvc_2019_debug",
      "displayName": "Debug",
      "configurePreset": "msvc_2019_debug",
      "jobs":  8,
      "configuration": "Debug"
    },
    {
      "name": "msvc_2019_release",
      "displayName": "Release",
      "configurePreset": "msvc_2019_release",
      "jobs":  8,
      "configuration": "Release"
    },
    {
      "name": "msvc_2019_relwithdebinfo",
      "displayName": "RelWithDebInfo",
      "configurePreset": "msvc_2019_relwithdebinfo",
      "jobs":  8,
      "configuration": "RelWithDebInfo"
    },
    {
      "name": "msvc_2019_minsizerel",
      "displayName": "MinSizeRel",
      "configurePreset": "msvc_2019_minsizerel",
      "jobs":  8,
      "configuration": "MinSizeRel"
    }
  ],
  "testPresets": [
    {
      "name": "default_debug",
      "configurePreset": "default_debug",
      "output": {
        "outputOnFailure": true
      },
      "execution": {
        "noTestsAction": "error",
        "stopOnFailure": true
      }
    }
  ]
}
