Architecture of CMake