Преглед изворни кода

ENH: slightly modified version of Alex's relative path arguments for custom commands

Ken Martin пре 20 година
родитељ
комит
91730c6005
1 измењених фајлова са 39 додато и 22 уклоњено
  1. 39 22
      Source/cmAddCustomCommandCommand.cxx

+ 39 - 22
Source/cmAddCustomCommandCommand.cxx

@@ -117,36 +117,53 @@ bool cmAddCustomCommandCommand::InitialPass(std::vector<std::string> const& args
       }
     else
       {
+      std::string filename;
       switch (doing)
         {
         case doing_source:
-          source = copy;
-          break;
         case doing_output:
-          output = copy;
-          break;
-        case doing_main_dependency:
-          main_dependency = copy;
-          break;
-        case doing_command:
-          currentLine.push_back(copy);
-          break;
-        case doing_target:
-          target = copy;
-          break;
-        case doing_depends:
-          depends.push_back(copy);
-          break;
         case doing_outputs:
-          outputs.push_back(copy);
-          break;
-        case doing_comment:
-          comment = copy;
+          if (!cmSystemTools::FileIsFullPath(copy.c_str()))
+            {
+            filename = m_Makefile->GetStartDirectory();
+            filename += "/";
+            }
+          filename += copy;
           break;
         default:
-          this->SetError("Wrong syntax. Unknown type of argument.");
-          return false;
+          break;
         }
+
+       switch (doing)
+         {
+         case doing_source:
+           source = filename;
+           break;
+         case doing_output:
+           output = filename;
+           break;
+         case doing_main_dependency:
+           main_dependency = copy;
+           break;
+         case doing_command:
+           currentLine.push_back(copy);
+           break;
+         case doing_target:
+           target = copy;
+           break;
+         case doing_depends:
+           depends.push_back(copy);
+           break;
+         case doing_outputs:
+           outputs.push_back(filename);
+           break;
+         case doing_comment:
+           comment = copy;
+           break;
+         default:
+           this->SetError("Wrong syntax. Unknown type of argument.");
+           return false;
+         }
       }
     }