What do we want our presets to be?

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"
        }
      ]
    }
  ]
}
1 Like