Cross compiling with it is a significant pain. The way dependencies are searched for is extremely hard to debug--it either works or it fails with no indication of why. I usually end up having to hack debug statements throughout /usr/share/cmake-2.8/Modules in order to work out what's going on. IIRC the breakage is usually caused by the macros for finding dependencies not taking into account that CMAKE_FIND_ROOT_PATH would ever be used. There is also the magical handling of the toolchain file (why can't the relevant variables be set with -D on the command line?), but that is a minor issue that can be easily worked around once the necessary amount of hair has been pulled out.
Some day I hope to use a build system that does not make me pine for the autotools, but that day has not yet come to pass.