Forráskód Böngészése

ENH: Added diagnosis of bad target names.

Brad King 19 éve
szülő
commit
6ce165de43
1 módosított fájl, 23 hozzáadás és 0 törlés
  1. 23 0
      Source/cmAddCustomTargetCommand.cxx

+ 23 - 0
Source/cmAddCustomTargetCommand.cxx

@@ -26,6 +26,29 @@ bool cmAddCustomTargetCommand::InitialPass(
     return false;
     }
 
+  // Check the target name.
+  if(args[0].find_first_of("/\\") != args[0].npos)
+    {
+    int major = 0;
+    int minor = 0;
+    if(const char* versionValue =
+       this->Makefile->GetDefinition("CMAKE_BACKWARDS_COMPATIBILITY"))
+      {
+      sscanf(versionValue, "%d.%d", &major, &minor);
+      }
+    if(!major || major > 3 || (major == 2 && minor > 2))
+      {
+      cmOStringStream e;
+      e << "called with invalid target name \"" << args[0]
+        << "\".  Target names may not contain a slash.  "
+        << "Use ADD_CUSTOM_COMMAND to generate files.  "
+        << "Set CMAKE_BACKWARDS_COMPATIBILITY to 2.2 "
+        << "or lower to skip this check.";
+      this->SetError(e.str().c_str());
+      return false;
+      }
+    }
+
   // Accumulate one command line at a time.
   cmCustomCommandLine currentLine;