Calling exec on your string, you actually end up executing cmake with the following arguments:
1: .
2: -G
3: "Unix
4: Makefiles"
exec itself doesn't interpret quotes, but just spaces, and passes the arguments this way to the execve system call. You need to let Bash interpret the quotes by using a built-in like eval.