Procházet zdrojové kódy

hopeful fix for backwards compat

Ken Martin před 22 roky
rodič
revize
b53b467414
1 změnil soubory, kde provedl 18 přidání a 4 odebrání
  1. 18 4
      Source/cmMakefile.cxx

+ 18 - 4
Source/cmMakefile.cxx

@@ -458,13 +458,27 @@ void cmMakefile::AddCustomCommand(const char* source,
     for(std::vector<std::string>::const_iterator d = outputs.begin();
         d != outputs.end(); ++d)
       {
-      std::vector<std::string> depends2 = depends;
-      depends2.push_back(source);
-      this->AddCustomCommandToOutput(d->c_str(), command, commandArgs, 
-                                     0, depends2, comment);
+      // if this looks like a real file then use is as the main depend
+      cmRegularExpression SourceFiles("\\.(C|M|c|c\\+\\+|cc|cpp|cxx|m|mm|rc|def|r|odl|idl|hpj|bat|h|h\\+\\+|hm|hpp|hxx|in|txx|inl)$");
+      if (SourceFiles.find(source))
+        {
+        this->AddCustomCommandToOutput(d->c_str(), command, commandArgs, 
+                                       source, depends, comment);
+        }
+      // otherwise do not use a main depend
+      else
+        {
+        std::vector<std::string> depends2 = depends;
+        depends2.push_back(source);
+        this->AddCustomCommandToOutput(d->c_str(), command, commandArgs, 
+                                       0, depends2, comment);
+        }
+      
       // add the output to the target?
       std::string sname = *d;
       sname += ".rule";
+      // if the rule was added to the source, 
+      // then add the source to the target
       if (!this->GetSource(sname.c_str()))
         {
         if (m_Targets.find(target) != m_Targets.end())