module-based cmake build system