Index: Source/cmExtraEclipseCDT4Generator.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExtraEclipseCDT4Generator.h,v
retrieving revision 1.4
diff -b -u -p -r1.4 cmExtraEclipseCDT4Generator.h
--- Source/cmExtraEclipseCDT4Generator.h	19 Feb 2008 21:27:03 -0000	1.4
+++ Source/cmExtraEclipseCDT4Generator.h	31 Dec 2008 02:32:07 -0000
@@ -84,6 +84,9 @@ private:
                                          const std::string& type,
                                          const std::string& path);
 
+  // Strip quotes from CMake variables.
+  static std::string EscapeForXML(const std::string& value);
+
   // Helper functions
   static void AppendStorageScanners(cmGeneratedFileStream& fout);
   static void AppendTarget         (cmGeneratedFileStream& fout,
Index: Source/cmExtraEclipseCDT4Generator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExtraEclipseCDT4Generator.cxx,v
retrieving revision 1.15
diff -b -u -p -r1.15 cmExtraEclipseCDT4Generator.cxx
--- Source/cmExtraEclipseCDT4Generator.cxx	6 Aug 2008 19:35:52 -0000	1.15
+++ Source/cmExtraEclipseCDT4Generator.cxx	31 Dec 2008 02:32:08 -0000
@@ -573,7 +573,7 @@ void cmExtraEclipseCDT4Generator::Create
           {
           emmited.insert(def);
           fout << "<pathentry kind=\"mac\" name=\"" << def
-               << "\" path=\"\" value=\"" << val << "\"/>\n";
+               << "\" path=\"\" value=\"" << this->EscapeForXML(val) << "\"/>\n";
           }
         }
       }
@@ -792,6 +792,19 @@ cmExtraEclipseCDT4Generator::GeneratePro
   return name + (type.empty() ? "" : "-") + type + "@" + path;
 }
 
+std::string cmExtraEclipseCDT4Generator::EscapeForXML(const std::string& value)
+{
+  std::string str = value;
+  cmSystemTools::ReplaceString(str, "&", "&amp;");
+  cmSystemTools::ReplaceString(str, "<", "&lt;");
+  cmSystemTools::ReplaceString(str, ">", "&gt;");
+  cmSystemTools::ReplaceString(str, "\"", "&quot;");
+  // NOTE: This one is not necessary, since as of Eclipse CDT4 it will
+  //       automatically change this to the original value (').
+  //cmSystemTools::ReplaceString(str, "'", "&apos;");
+  return str;
+}
+
 //----------------------------------------------------------------------------
 // Helper functions
 //----------------------------------------------------------------------------
