Right now CMake workflows doesn’t have ability to inherit the another workflow.
It forces to copy-paste a lot of code in some scenarios when the workflows use slightly different configure steps.
Consider this part from one of my presets for building project in docker:
"workflowPresets":
[
{
"name": "docker",
"description": "Base docker configure/build workflow",
"steps": [
{
"type": "configure",
"name": "docker"
},
{
"type": "build",
"name": "docker"
}
]
},
{
"name": "docker-build-gcc",
"description": "Synonim for \"docker\" workflow for conditional build in Dockerfile",
"steps": [
{
"type": "configure",
"name": "docker"
},
{
"type": "build",
"name": "docker"
}
]
},
{
"name": "docker-build-clang",
"description": "Synonim for \"docker-clang\" workflow for conditional build in Dockerfile",
"steps": [
{
"type": "configure",
"name": "docker-clang"
},
{
"type": "build",
"name": "docker-clang"
}
]
},
{
"name": "docker-dev",
"description": "Base docker dev environment (similar to GCC build), only configure project for ability to exec build/test manually",
"steps": [
{
"type": "configure",
"name": "docker"
}
]
},
{
"name": "docker-dev-gcc",
"description": "Base docker dev environment for GCC build, only configure project for ability to exec build/test manually",
"steps": [
{
"type": "configure",
"name": "docker"
}
]
},
{
"name": "docker-dev-clang",
"description": "Base docker dev environment for Clang build, only configure project for ability to exec build/test manually",
"steps": [
{
"type": "configure",
"name": "docker-clang"
}
]
}
]
The “docker-dev-" presets just configure CMake and are designed for “dev containers” environment.
The "docker-build-” presets reuse the “docker-dev-*” configure steps and add build steps (for now they just copy-paste similar steps).
With inheriting this example could looks like:
"workflowPresets":
[
{
"name": "docker-dev",
"description": "Base docker dev env configure workflow with GCC",
"steps": [
{
"type": "configure",
"name": "docker"
}
]
},
{
"name": "docker-dev-gcc",
"description": "Synonym for \"docker-dev\" workflow for conditional build in Dockerfile",
"inherits": [ "docker-dev"]
},
{
"name": "docker-dev-clang",
"description": "Base docker dev env configure workflow with Clang",
"steps": [
{
"type": "configure",
"name": "docker-clang"
}
]
},
{
"name": "docker-build",
"description": "Base docker build workflow with GCC",
"inherits": [ "docker-dev" ],
"steps": [
{
"type": "build",
"name": "docker"
}
]
},
{
"name": "docker-build-gcc",
"description": "Synonym for \"docker-build\" workflow for conditional build in Dockerfile with GCC",
"inherits": [ "docker-build" ],
},
{
"name": "docker-build-clang",
"description": "Base docker build workflow with Clang",
"inherits": [ "docker-dev-clang" ],
"steps": [
{
"type": "build",
"name": "docker-clang"
}
]
},
]