CMakePresets: why not expand macros in name or inherits fields?

{
    "version": 7,
    "cmakeMinimumRequired": {
        "major": 3,
        "minor": 27,
        "patch": 0
    },
    "configurePresets": [
        {
            "name": "default-config",
            "hidden": true,
            "generator": "Ninja",
            "cacheVariables": {
                "CMAKE_HOST_SYSTEM_PROCESSOR": "$penv{PROCESSOR_ARCHITECTURE}"
            },
            "environment": { "VARIANT": "MSVC" }
        },
        {
            "name": "$penv{CC}-config",
            "hidden": false,
            "inherits": "default-config",
            "cacheVariables": {
                "CMAKE_C_COMPILER": "$penv{CC}",
                "CMAKE_CXX_COMPILER": "$penv{CXX}"
            },
            "environment": { "VARIANT": "unknown" }
        },
        {
            "name": "clang-config",
            "hidden": true,
            "inherits": "default-config",
            "cacheVariables": {
                "CMAKE_C_COMPILER": "clang",
                "CMAKE_CXX_COMPILER": "clang++"
            },
            "environment": { "VARIANT": "Clang" }
        },
        {
            "name": "ninja-multi-vcpkg",
            "displayName": "Ninja Multi-Config",
            "description": "Configure with vcpkg toolchain and generate Ninja Multi-Config project files for all variants",
            "vendor": {
                "ClausKlein.de/CMake/1.0": {
                    "description": "FIXME: We need macro expansion here!",
                    "inherits": "$penv{CC}-config"
                }
            },
            "inherits": "default-config",
            "generator": "Ninja Multi-Config",
            "hidden": true,
            "cacheVariables": {
                "CMAKE_TOOLCHAIN_FILE": {
                    "type": "FILEPATH",
                    "value": "${sourceDir}/vcpkg/scripts/buildsystems/vcpkg.cmake"
                },
                "VCPKG_CHAINLOAD_TOOLCHAIN_FILE": {
                    "type": "FILEPATH",
                    "value": "${sourceDir}/toolchain/WindowsToolchain/Windows.$env{VARIANT}.toolchain.cmake"
                }
            }
        }
    ]
}
CXX=g++ CC=gcc cmake --list-presets
Available configure presets:

  "user-config"
  "gcc-debug"        - gcc Debug
  "gcc-release"      - gcc Release
  "clang-debug"      - clang Debug
  "clang-release"    - clang Release
  "$penv{CC}-config"

Cc: @kyle.edwards

Why in general is the expansion so limited to special contexts?. It would open much possibilities to reduce combinatorial explosion. I think even for IDEs it would be easier if that were context free.

1 Like