浏览代码

ENH: Each cmCableWrapTclCommand instance now uses a single cmMakeDepend object for dependencies for all the gccxml input files it generates. This should significantly improve generation time.

Brad King 24 年之前
父节点
当前提交
852be8a520
共有 2 个文件被更改,包括 11 次插入4 次删除
  1. 6 4
      Source/cmCableWrapTclCommand.cxx
  2. 5 0
      Source/cmCableWrapTclCommand.h

+ 6 - 4
Source/cmCableWrapTclCommand.cxx

@@ -45,7 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include "cmMakeDepend.h"
 
 cmCableWrapTclCommand::cmCableWrapTclCommand():
-  m_CableClassSet(NULL)
+  m_CableClassSet(NULL), m_MakeDepend(new cmMakeDepend)
 {
 }
 
@@ -55,6 +55,7 @@ cmCableWrapTclCommand::~cmCableWrapTclCommand()
     {
     delete m_CableClassSet;
     }
+  delete m_MakeDepend;
 }
 
 
@@ -113,6 +114,9 @@ bool cmCableWrapTclCommand::InitialPass(std::vector<std::string>& args)
  */
 void cmCableWrapTclCommand::GenerateCableFiles() const
 {
+  // Make sure the dependency generator is ready to go.
+  m_MakeDepend->SetMakefile(m_Makefile);
+
   // Each wrapped class may have an associated "tag" that represents
   // an alternative name without funky C++ syntax in it.  This makes
   // it easier to refer to the class in a Tcl script.  We will also
@@ -320,10 +324,8 @@ void cmCableWrapTclCommand::GenerateCableClassFiles(const char* name,
   depends.push_back(command);
 
   // Get the dependencies of the file.
-  cmMakeDepend md;
-  md.SetMakefile(m_Makefile);
   const cmDependInformation* dependInfo =
-    md.FindDependencies(classCxxName.c_str());
+    m_MakeDepend->FindDependencies(classCxxName.c_str());
   if(dependInfo)
     {
     for(cmDependInformation::DependencySet::const_iterator d = 

+ 5 - 0
Source/cmCableWrapTclCommand.h

@@ -45,6 +45,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include "cmCommand.h"
 #include "cmCableClassSet.h"
 
+class cmMakeDepend;
+
 /** \class cmCableWrapTclCommand
  * \brief Define a command that wraps a set of classes in Tcl.
  */
@@ -119,6 +121,9 @@ private:
    * added to the makefile as another set.
    */
   cmCableClassSet* m_CableClassSet;
+
+  ///! The dependency generator.
+  cmMakeDepend* m_MakeDepend;
 };
 
 #endif