diff -Naur ./cmLocalVisualStudio7Generator.cxx ../../../cmake-2.8.4/Source/cmLocalVisualStudio7Generator.cxx
--- ./cmLocalVisualStudio7Generator.cxx	2011-02-15 14:51:43.000000000 -0600
+++ ../../../cmake-2.8.4/Source/cmLocalVisualStudio7Generator.cxx	2011-06-20 16:44:33.494000000 -0500
@@ -703,6 +703,10 @@
     {
     fout << "\t\t\tCharacterSet=\"1\">\n";
     }
+  else if(targetOptions.UsingSBCS())
+    {
+    fout << "\t\t\tCharacterSet=\"0\">\n";
+    }
   else
     {
     fout << "\t\t\tCharacterSet=\"2\">\n";
diff -Naur ./cmVisualStudio10TargetGenerator.cxx ../../../cmake-2.8.4/Source/cmVisualStudio10TargetGenerator.cxx
--- ./cmVisualStudio10TargetGenerator.cxx	2011-02-15 14:51:43.000000000 -0600
+++ ../../../cmake-2.8.4/Source/cmVisualStudio10TargetGenerator.cxx	2011-06-20 16:43:45.239000000 -0500
@@ -289,6 +289,10 @@
       {
       this->WriteString("<CharacterSet>Unicode</CharacterSet>\n", 2);
       }
+    else if (this->ClOptions[*i]->UsingSBCS())
+      {
+      this->WriteString("<CharacterSet>NotSet</CharacterSet>\n", 2);
+      }
     else
       {
       this->WriteString("<CharacterSet>MultiByte</CharacterSet>\n", 2);
diff -Naur ./cmVisualStudioGeneratorOptions.cxx ../../../cmake-2.8.4/Source/cmVisualStudioGeneratorOptions.cxx
--- ./cmVisualStudioGeneratorOptions.cxx	2011-02-15 14:51:43.000000000 -0600
+++ ../../../cmake-2.8.4/Source/cmVisualStudioGeneratorOptions.cxx	2011-06-20 16:42:41.526000000 -0500
@@ -116,6 +116,20 @@
     }
   return false;
 }
+//----------------------------------------------------------------------------
+bool cmVisualStudioGeneratorOptions::UsingSBCS()
+{
+  // Look for the a _UNICODE definition.
+  for(std::vector<std::string>::const_iterator di = this->Defines.begin();
+      di != this->Defines.end(); ++di)
+    {
+    if(*di == "_SBCS")
+      {
+      return true;
+      }
+    }
+  return false;
+}
 
 //----------------------------------------------------------------------------
 void cmVisualStudioGeneratorOptions::Parse(const char* flags)
diff -Naur ./cmVisualStudioGeneratorOptions.h ../../../cmake-2.8.4/Source/cmVisualStudioGeneratorOptions.h
--- ./cmVisualStudioGeneratorOptions.h	2011-02-15 14:51:43.000000000 -0600
+++ ../../../cmake-2.8.4/Source/cmVisualStudioGeneratorOptions.h	2011-06-20 16:42:40.538000000 -0500
@@ -49,6 +49,7 @@
 
   // Check for specific options.
   bool UsingUnicode();
+  bool UsingSBCS();
 
   bool IsDebug();
   // Write options to output.
