The confusion comes from the fact that set() automatically coerces space-delimited items into a ;-delimited list
set(ONE alpha;beta) set(TWO alpha beta) list(LENGTH ONE one_len) list(LENGTH TWO two_len) message(FATAL_ERROR "one <<${ONE}>> length ${one_len}\ntwo <<${TWO}>> length ${two_len}")
one <<alpha;beta>> length 2 two <<alpha;beta>> length 2
The confusion comes from the fact that set() automatically coerces space-delimited items into a ;-delimited list
emits