浏览代码

ENH: some better error reporting and more robust handlign of bad targets

Andy Cedilnik 20 年之前
父节点
当前提交
2d4b06c8e5
共有 2 个文件被更改,包括 12 次插入7 次删除
  1. 10 6
      Source/cmGlobalUnixMakefileGenerator3.cxx
  2. 2 1
      Source/cmLocalUnixMakefileGenerator3.cxx

+ 10 - 6
Source/cmGlobalUnixMakefileGenerator3.cxx

@@ -704,7 +704,9 @@ cmGlobalUnixMakefileGenerator3
       {
       // Don't emit the same rule twice (e.g. two targets with the same
       // simple name)
-      if(emitted.insert(t->second.GetName()).second)
+      if(t->second.GetName() &&
+         strlen(t->second.GetName()) &&
+         emitted.insert(t->second.GetName()).second)
         {
         // Add a rule to build the target by name.
         lg->WriteDivider(ruleFileStream);
@@ -749,11 +751,13 @@ cmGlobalUnixMakefileGenerator3
   bool needRequiresStep = this->NeedRequiresStep(lg);
   for(cmTargets::const_iterator t = targets.begin(); t != targets.end(); ++t)
     {
-    if((t->second.GetType() == cmTarget::EXECUTABLE) ||
-       (t->second.GetType() == cmTarget::STATIC_LIBRARY) ||
-       (t->second.GetType() == cmTarget::SHARED_LIBRARY) ||
-       (t->second.GetType() == cmTarget::MODULE_LIBRARY) ||
-       (t->second.GetType() == cmTarget::UTILITY))
+    if (((t->second.GetType() == cmTarget::EXECUTABLE) ||
+         (t->second.GetType() == cmTarget::STATIC_LIBRARY) ||
+         (t->second.GetType() == cmTarget::SHARED_LIBRARY) ||
+         (t->second.GetType() == cmTarget::MODULE_LIBRARY) ||
+         (t->second.GetType() == cmTarget::UTILITY)) &&
+        t->second.GetName() &&
+        strlen(t->second.GetName()))  
       {
       // Add a rule to build the target by name.
       localName = lg->GetRelativeTargetDirectory(t->second);

+ 2 - 1
Source/cmLocalUnixMakefileGenerator3.cxx

@@ -864,7 +864,8 @@ cmLocalUnixMakefileGenerator3
   // Make sure there is a target.
   if(!target || !*target)
     {
-    cmSystemTools::Error("No target for WriteMakeRule!");
+    cmSystemTools::Error("No target for WriteMakeRule! called with comment: ",
+                         comment);
     return;
     }