Use a function instead of a macro so we do not need an extra layer of backslashes. Use a bracket argument to avoid another layer of extra backslashes.
@@ -1,5 +1,5 @@
-macro(check var val)
+function(check var val)
if(NOT "${${var}}" STREQUAL "${val}")
message(SEND_ERROR "${var} is \"${${var}}\", not \"${val}\"")
endif()
-endmacro()
+endfunction()
@@ -55,5 +55,5 @@ check(test_semicolon ";")
check(test_colons_1 ":")
check(test_colons_2 "::")
check(test_colons_3 "Qt5::Core")
-check(test_colons_4 "C:\\\\CMake")
+check(test_colons_4 [[C:\CMake]])
check(test_colons_5 "C:/CMake")