Cmake has unspecified or implementation defined rather than undefined behaviour in that case I would argue from reading the documentation.
There is a big difference between "undefined" (anything can happen, including crashes or removing your home directory), and "unspecified" (in this case: it selects a default, but it may vary between platforms, releases, etc).
Some generators will initialize CMAKE_BUILD_TYPE, but if not, you get the "empty" configuration which corresponds to "no specific flags", so debug info, optimizations, etc. are whatever the toolchain defaults are. I believe some generators on Windows do initialize it because otherwise the runtime selection ends up being "no runtime" which…doesn't usually end up in a good place.
FD: I'm a CMake developer, but I don't know this part by heart.
somehow stuff is getting worse, now instead of seeing "1 day(s)" i see "1 days"
but yeah this should be handled by the fluent localization layer whenever cargo starts using that (presumably that will be the next step after rustc is fully instrumented for localization)