CMake and Tcl have a substantial number of similarities. Both languages:
- Are imperative.
- More-or-less natively support only string variables.
- Represent lists as specially-formatted strings.
- Have a single namespace for functions.
- Use function syntax for everything (control flow etc).
- Support some form of “uplevel” variable setting.