Disclaimer: Most native build tools have poor support for escaping certain values. CMake has work-arounds for many cases but some values may just not be possible to pass correctly. If a value does not seem to be escaped correctly, do not attempt to work-around the problem by adding escape sequences to the value. Your work-around may break in a future version of CMake that has improved escape support. Instead consider defining the macro in a (configured) header file. Then report the limitation. Known limitations include:
#Broken almost everywhere. ;Broken in VS IDE 7.0 and Borland Makefiles. ,Broken in VS IDE. %Broken in some cases in NMake. & |Broken in some cases on MinGW. ^ < > \ "Broken in most Make tools on Windows.
CMake does not reject these values outright because they do work in some cases. Use with caution.