Преглед изворни кода

Windows: Use UTF-8 for pipes in CMake, CTest and CPack

Applications which process CMake output will need to decode it as UTF-8
instead of console's codepage.
Dāvis Mosāns пре 9 година
родитељ
комит
076aef8e45
4 измењених фајлова са 7 додато и 1 уклоњено
  1. 2 0
      Source/CPack/cpack.cxx
  2. 1 1
      Source/CTest/cmProcess.cxx
  3. 2 0
      Source/cmakemain.cxx
  4. 2 0
      Source/ctest.cxx

+ 2 - 0
Source/CPack/cpack.cxx

@@ -91,7 +91,9 @@ int main(int argc, char const* const* argv)
 #if defined(_WIN32) && defined(CMAKE_BUILD_WITH_CMAKE)
   // Replace streambuf so we can output Unicode to console
   cmsys::ConsoleBuf::Manager consoleOut(std::cout);
+  consoleOut.SetUTF8Pipes();
   cmsys::ConsoleBuf::Manager consoleErr(std::cerr, true);
+  consoleErr.SetUTF8Pipes();
 #endif
   cmsys::Encoding::CommandLineArguments args =
     cmsys::Encoding::CommandLineArguments::Main(argc, argv);

+ 1 - 1
Source/CTest/cmProcess.cxx

@@ -105,7 +105,7 @@ bool cmProcess::Buffer::GetLast(std::string& line)
 
 int cmProcess::GetNextOutputLine(std::string& line, double timeout)
 {
-  cmProcessOutput processOutput;
+  cmProcessOutput processOutput(cmProcessOutput::UTF8);
   std::string strdata;
   for (;;) {
     // Look for lines already buffered.

+ 2 - 0
Source/cmakemain.cxx

@@ -160,7 +160,9 @@ int main(int ac, char const* const* av)
 #if defined(_WIN32) && defined(CMAKE_BUILD_WITH_CMAKE)
   // Replace streambuf so we can output Unicode to console
   cmsys::ConsoleBuf::Manager consoleOut(std::cout);
+  consoleOut.SetUTF8Pipes();
   cmsys::ConsoleBuf::Manager consoleErr(std::cerr, true);
+  consoleErr.SetUTF8Pipes();
 #endif
   cmsys::Encoding::CommandLineArguments args =
     cmsys::Encoding::CommandLineArguments::Main(ac, av);

+ 2 - 0
Source/ctest.cxx

@@ -116,7 +116,9 @@ int main(int argc, char const* const* argv)
 #if defined(_WIN32) && defined(CMAKE_BUILD_WITH_CMAKE)
   // Replace streambuf so we can output Unicode to console
   cmsys::ConsoleBuf::Manager consoleOut(std::cout);
+  consoleOut.SetUTF8Pipes();
   cmsys::ConsoleBuf::Manager consoleErr(std::cerr, true);
+  consoleErr.SetUTF8Pipes();
 #endif
   cmsys::Encoding::CommandLineArguments encoding_args =
     cmsys::Encoding::CommandLineArguments::Main(argc, argv);