فهرست منبع

ENH: minor perf improvement

Ken Martin 20 سال پیش
والد
کامیت
46e5b9afe2
2فایلهای تغییر یافته به همراه26 افزوده شده و 6 حذف شده
  1. 16 5
      Source/cmLocalUnixMakefileGenerator3.cxx
  2. 10 1
      Source/cmLocalUnixMakefileGenerator3.h

+ 16 - 5
Source/cmLocalUnixMakefileGenerator3.cxx

@@ -54,6 +54,13 @@ cmLocalUnixMakefileGenerator3::~cmLocalUnixMakefileGenerator3()
 {
 }
 
+//----------------------------------------------------------------------------
+void cmLocalUnixMakefileGenerator3::Configure()
+{
+  this->ComputeHomeRelativeOutputPath();
+  this->cmLocalGenerator::Configure();
+}
+
 //----------------------------------------------------------------------------
 void cmLocalUnixMakefileGenerator3::Generate()
 {
@@ -259,17 +266,21 @@ void cmLocalUnixMakefileGenerator3::WriteDisclaimer(std::ostream& os)
     << cmMakefile::GetMinorVersion() << "\n\n";
 }
 
-std::string cmLocalUnixMakefileGenerator3::GetHomeRelativeOutputPath()
+void cmLocalUnixMakefileGenerator3::ComputeHomeRelativeOutputPath()
 {
   // Include the rule file for each object.
-  std::string relPath = 
+  m_HomeRelativeOutputPath = 
     cmSystemTools::RelativePath(m_Makefile->GetHomeOutputDirectory(),
                                 m_Makefile->GetStartOutputDirectory());
-  if (relPath.size())
+  if (m_HomeRelativeOutputPath.size())
     {
-    relPath += "/";
+    m_HomeRelativeOutputPath += "/";
     }
-  return relPath;
+}
+
+const std::string &cmLocalUnixMakefileGenerator3::GetHomeRelativeOutputPath()
+{
+  return m_HomeRelativeOutputPath;
 }
 
 //----------------------------------------------------------------------------

+ 10 - 1
Source/cmLocalUnixMakefileGenerator3.h

@@ -43,12 +43,18 @@ public:
    */
   virtual void Generate();
 
+  /**
+   * Process the CMakeLists files for this directory to fill in the
+   * m_Makefile ivar 
+   */
+  virtual void Configure();
+
   /** creates the common disclainer text at the top of each makefile */
   void WriteDisclaimer(std::ostream& os);
 
   // this returns the relative path between the HomeOutputDirectory and this
   // local generators StartOutputDirectory
-  std::string GetHomeRelativeOutputPath();
+  const std::string &GetHomeRelativeOutputPath();
 
   // Write out a make rule 
   void WriteMakeRule(std::ostream& os,
@@ -312,6 +318,7 @@ protected:
   std::string CreateMakeVariable(const char* sin, const char* s2in);
   //==========================================================================
 
+  void ComputeHomeRelativeOutputPath();
 
 private:
   std::map<cmStdString, IntegrityCheckSet> m_CheckDependFiles;
@@ -332,6 +339,8 @@ private:
   // Flag for whether echo command needs quotes.
   bool m_EchoNeedsQuote;
 
+  std::string m_HomeRelativeOutputPath;
+  
   // Set of object file names that will be built in this directory.
   std::set<cmStdString> m_ObjectFiles;
 };