Explorar el Código

ENH: update to new style MakeDepend

Bill Hoffman hace 23 años
padre
commit
a93038c52a
Se han modificado 2 ficheros con 38 adiciones y 13 borrados
  1. 33 11
      Source/cmITKWrapTclCommand.cxx
  2. 5 2
      Source/cmITKWrapTclCommand.h

+ 33 - 11
Source/cmITKWrapTclCommand.cxx

@@ -27,6 +27,37 @@ cmITKWrapTclCommand::~cmITKWrapTclCommand()
   delete m_MakeDepend;
 }
 
+
+
+void 
+cmITKWrapTclCommand::AddDependencies(cmDependInformation const *info,
+                                     std::vector<std::string>& depends,
+                                     std::set<cmDependInformation const*>& visited)
+{
+  if(!info)
+    {
+    return;
+    }
+  // add info to the visited set
+  visited.insert(info);
+    
+  // add this dependency and the recurse
+  // now recurse with info's dependencies
+  for(cmDependInformation::DependencySet::const_iterator d = 
+        info->m_DependencySet.begin();
+      d != info->m_DependencySet.end(); ++d)
+    {
+    if (visited.find(*d) == visited.end())
+      { 
+      if((*d)->m_FullPath != "")
+        {
+        depends.push_back((*d)->m_FullPath);
+        }
+      this->AddDependencies(*d,depends,visited);
+      }
+    }
+}
+
 // cmITKWrapTclCommand
 bool cmITKWrapTclCommand::InitialPass(std::vector<std::string> const& argsIn)
 {
@@ -154,17 +185,8 @@ bool cmITKWrapTclCommand::CreateCableRule(const char* configFile)
     m_MakeDepend->FindDependencies(inFile.c_str());
   if (info)
     {
-    for(cmDependInformation::DependencySet::const_iterator d = 
-          info->m_DependencySet.begin();
-        d != info->m_DependencySet.end(); ++d)
-      {
-      // Make sure the full path is given.  If not, the dependency was
-      // not found.
-      if((*d)->m_FullPath != "")
-        {
-        depends.push_back((*d)->m_FullPath);
-        }
-      }
+    std::set<cmDependInformation const*> visited;
+    this->AddDependencies(info, depends, visited);
     }
   
   std::vector<std::string> outputs;

+ 5 - 2
Source/cmITKWrapTclCommand.h

@@ -19,7 +19,7 @@
 
 #include "cmStandardIncludes.h"
 #include "cmCommand.h"
-
+class cmDependInformation;
 class cmMakeDepend;
 
 /** \class cmITKWrapTclCommand
@@ -58,7 +58,10 @@ public:
     }
   
   cmTypeMacro(cmITKWrapTclCommand, cmCommand);
-protected:
+protected:  
+  void AddDependencies(cmDependInformation const*info,
+                       std::vector<std::string>& depends,
+                       std::set<cmDependInformation const*>& visited);
   cmStdString m_TargetName;
   cmTarget* m_Target;