Hello, I wanted to ask a bit about the state of discussion #23649 (can’t link due to new user limitation). I saw that the proposed options are currently either modifying the if expression to allow for additional parameters:
if(<string|variable> VERSION_MATCHES <string|variable> [<version_scheme>])
Or a bunch of verbose overloads for all current operations:
if(<string|expression> <VERSION_SCHEME>_MATCHES <string|expression>)
To not enter that discussion on the GitLab, as I don’t want to clutter it up with questions. I ask here.
Why is the operator1,2-syntax used for scoped variables (i.e. CACHE{} and ENV{}), not used more broadly in CMake?
I suppose that these operators act like read only scopes. Not actually persistent metadata/type information. So perhaps using it like VERSION_MATCHES $SCHEME{"x.y.z-pre"} would be very different from the current behaviour. Would something like $SCHEME:{VERSION_MATCHES} also not work?
Having some concept of generics/templates would be the only way to solve this in a way that doesn’t make CMake harder to maintain, nor introduces new types that make implementing CMake harder/less stable?