Browse Source

Encoding: If configured, write Visual Studio project files as UTF-8.

Clinton Stimpson 11 years ago
parent
commit
ee8cef8725

+ 13 - 1
Source/cmGlobalVisualStudio7Generator.cxx

@@ -873,7 +873,8 @@ cmGlobalVisualStudio7Generator::WriteUtilityDepend(cmTarget const* target)
   std::string guid = this->GetGUID(pname.c_str());
 
   fout <<
-    "<?xml version=\"1.0\" encoding = \"Windows-1252\"?>\n"
+    "<?xml version=\"1.0\" encoding = \""
+    << this->Encoding() << "\"?>\n"
     "<VisualStudioProject\n"
     "\tProjectType=\"Visual C++\"\n"
     "\tVersion=\"" << this->GetIDEVersion() << "0\"\n"
@@ -1038,3 +1039,14 @@ cmIDEFlagTable const* cmGlobalVisualStudio7Generator::GetExtraFlagTableVS7()
 {
   return cmVS7ExtraFlagTable;
 }
+
+std::string cmGlobalVisualStudio7Generator::Encoding()
+{
+  std::ostringstream encoding;
+#ifdef CMAKE_ENCODING_UTF8
+  encoding << "UTF-8";
+#else
+  encoding << "Windows-1252";
+#endif
+  return encoding.str();
+}

+ 3 - 0
Source/cmGlobalVisualStudio7Generator.h

@@ -109,6 +109,9 @@ public:
 
   virtual void FindMakeProgram(cmMakefile*);
 
+  // Encoding for Visual Studio files
+  virtual std::string Encoding();
+
 protected:
   virtual const char* GetIDEVersion() { return "7.0"; }
 

+ 2 - 1
Source/cmGlobalVisualStudioGenerator.cxx

@@ -1,3 +1,4 @@
+
 /*============================================================================
   CMake - Cross Platform Makefile Generator
   Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
@@ -918,4 +919,4 @@ std::string cmGlobalVisualStudioGenerator::ExpandCFGIntDir(
     i += config.size();
     }
   return tmp;
-}
+}

+ 8 - 4
Source/cmLocalVisualStudio7Generator.cxx

@@ -1975,7 +1975,8 @@ cmLocalVisualStudio7Generator
 
   cmGlobalVisualStudio7Generator* gg =
     static_cast<cmGlobalVisualStudio7Generator *>(this->GlobalGenerator);
-  fout << "<?xml version=\"1.0\" encoding = \"Windows-1252\"?>\n"
+  fout << "<?xml version=\"1.0\" encoding = \""
+       << gg->Encoding() << "\"?>\n"
        << "<VisualStudioProject\n"
        << "\tProjectCreator=\"Intel Fortran\"\n"
        << "\tVersion=\"" << gg->GetIntelProjectVersion() << "\"\n";
@@ -2038,7 +2039,12 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout,
     this->WriteProjectStartFortran(fout, libName, target);
     return;
     }
-  fout << "<?xml version=\"1.0\" encoding = \"Windows-1252\"?>\n"
+
+  cmGlobalVisualStudio7Generator* gg =
+    static_cast<cmGlobalVisualStudio7Generator *>(this->GlobalGenerator);
+
+  fout << "<?xml version=\"1.0\" encoding = \""
+       << gg->Encoding() << "\"?>\n"
        << "<VisualStudioProject\n"
        << "\tProjectType=\"Visual C++\"\n";
   if(this->Version == VS71)
@@ -2059,8 +2065,6 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout,
     {
     keyword = "Win32Proj";
     }
-  cmGlobalVisualStudio7Generator* gg =
-    static_cast<cmGlobalVisualStudio7Generator *>(this->GlobalGenerator);
   fout << "\tName=\"" << projLabel << "\"\n";
   if(this->Version >= VS8)
     {

+ 4 - 2
Source/cmVisualStudio10TargetGenerator.cxx

@@ -222,7 +222,8 @@ void cmVisualStudio10TargetGenerator::Generate()
   //get the tools version to use
   const std::string toolsVer(this->GlobalGenerator->GetToolsVersion());
   std::string project_defaults=
-    "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>\n";
+    "<?xml version=\"1.0\" encoding=\"" +
+    this->GlobalGenerator->Encoding() + "\"?>\n";
   project_defaults.append("<Project DefaultTargets=\"Build\" ToolsVersion=\"");
   project_defaults.append(toolsVer +"\" ");
   project_defaults.append(
@@ -732,7 +733,8 @@ void cmVisualStudio10TargetGenerator::WriteGroups()
   //get the tools version to use
   const std::string toolsVer(this->GlobalGenerator->GetToolsVersion());
   std::string project_defaults=
-    "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>\n";
+    "<?xml version=\"1.0\" encoding=\"" +
+    this->GlobalGenerator->Encoding() + "\"?>\n";
   project_defaults.append("<Project ToolsVersion=\"");
   project_defaults.append(toolsVer +"\" ");
   project_defaults.append(