Sfoglia il codice sorgente

ENH: Enable capture of output from VCExpress.exe and devenv.exe.

Brad King 19 anni fa
parent
commit
f2cf7e9197
4 ha cambiato i file con 22 aggiunte e 0 eliminazioni
  1. 3 0
      Source/cmCTest.cxx
  2. 14 0
      Source/cmSystemTools.cxx
  3. 3 0
      Source/cmSystemTools.h
  4. 2 0
      Source/cmake.cxx

+ 3 - 0
Source/cmCTest.cxx

@@ -255,6 +255,9 @@ cmCTest::cmCTest()
     {
     it->second->SetCTestInstance(this);
     }
+
+  // Make sure we can capture the build tool output.
+  cmSystemTools::EnableVSConsoleOutput();
 }
 
 //----------------------------------------------------------------------

+ 14 - 0
Source/cmSystemTools.cxx

@@ -1266,6 +1266,20 @@ bool cmSystemTools::PutEnv(const char* value)
   return ret == 0;
 }
 
+void cmSystemTools::EnableVSConsoleOutput()
+{
+  // Visual Studio 8 2005 (devenv.exe or VCExpress.exe) will not
+  // display output to the console unless this environment variable is
+  // set.  We need it to capture the output of these build tools.
+  // Note for future work that one could pass "/out \\.\pipe\NAME" to
+  // either of these executables where NAME is created with
+  // CreateNamedPipe.  This would bypass the internal buffering of the
+  // output and allow it to be captured on the fly.
+#ifdef _WIN32
+  cmSystemTools::PutEnv("vsconsoleoutput=1");
+#endif
+}
+
 std::string cmSystemTools::MakeXMLSafe(const char* str)
 {
   std::vector<char> result;

+ 3 - 0
Source/cmSystemTools.h

@@ -291,6 +291,9 @@ public:
       of the form var=value */
   static bool PutEnv(const char* value);
 
+  /** Setup the environment to enable VS 8 IDE output.  */
+  static void EnableVSConsoleOutput();
+
   /** Make string XML safe */
   static std::string MakeXMLSafe(const char* str);
 

+ 2 - 0
Source/cmake.cxx

@@ -148,6 +148,8 @@ cmake::cmake()
   this->AddDefaultGenerators();
   this->AddDefaultCommands();
 
+  // Make sure we can capture the build tool output.
+  cmSystemTools::EnableVSConsoleOutput();
 }
 
 cmake::~cmake()