diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 27cd85637..493eb81dd 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -946,8 +946,11 @@ void cmLocalVisualStudio7Generator::OutputDefineFlags(const char* flags, done = true; } - cmSystemTools::ReplaceString(define, "\"", """); - fout << define << ","; + // Double-quotes in the value of the definition must be escaped + // with a backslash. The entire definition should be quoted in + // the generated xml attribute to avoid confusing the VS parser. + cmSystemTools::ReplaceString(define, "\"", "\\""); + fout << """ << define << "","; if(!done) { pos = defs.find("-D", nextpos);