Developer reports

CMake preset variable inheritance

Resolve raw cache/environment winners and their defining preset routes.

Your inputs

Start with an example

Your inputs stay in your browser.

Your result

Example result

How it works

Start with the child’s own entries, then insert only absent keys from each fully resolved parent in listed order. Null stays present and masks later parents. Cache objects replace atomically; bare booleans become BOOL, while object booleans retain their own optional type. Carry each winning definition’s route.

The local preset masks MODE inherited from base while keeping SDK from base. In a diamond, a first parent’s inherited value wins over a second parent’s own value. Hidden is read only from the selected record.

Limits

Raw variable projection before macro expansion. Up to 1000 presets, 100 parents per record, 10000 declared edges, 20000 authored/output entries, 128 presets per ancestry path, 200000 intermediate entry checks, 50000 stored provenance steps, 750000 data characters and an 8 MiB report. Exact nonempty names/keys, strings/booleans/null cache entries and strings/null environment entries only. Optional version 1–13 is reported without full schema validation; version10+ ignores $comment metadata inside cache objects while map keys stay ordinary variables. Nonempty includes reject; only selected ancestry links are resolved. Conditions, other preset fields, process environment, cache changes and runnable-preset validity are unassessed. Macros stay literal; null means not set by this preset.