浏览代码

GRAPHVIZ_IGNORE_TARGETS is now a list of regular expressions

This is similar e.g. to CTEST_CUSTOM_WARNING_EXCEPTION from ctest.
GRAPHVIZ_TARGET_IGNORE_REGEX is not supported anymore.
I hope this is ok, since this was 100% undocumented and can't
break a build.

Alex
Alex Neundorf 14 年之前
父节点
当前提交
4f96a7621f
共有 2 个文件被更改,包括 31 次插入25 次删除
  1. 30 22
      Source/cmGraphVizWriter.cxx
  2. 1 3
      Source/cmGraphVizWriter.h

+ 30 - 22
Source/cmGraphVizWriter.cxx

@@ -119,28 +119,28 @@ void cmGraphVizWriter::ReadSettings(const char* settingsFileName,
   __set_bool_if_set(this->GenerateForModuleLibs, "GRAPHVIZ_MODULE_LIBS");
   __set_bool_if_set(this->GenerateForExternals, "GRAPHVIZ_EXTERNAL_LIBS");
 
-  cmStdString tmpRegexString;
-  __set_if_set(tmpRegexString, "GRAPHVIZ_TARGET_IGNORE_REGEX");
-  if (tmpRegexString.size() > 0)
-    {
-    if (!this->TargetIgnoreRegex.compile(tmpRegexString.c_str()))
-      {
-      std::cerr << "Could not compile bad regex \"" << tmpRegexString << "\""
-                << std::endl;
-      }
-    }
+  cmStdString ignoreTargetsRegexes;
+  __set_if_set(ignoreTargetsRegexes, "GRAPHVIZ_IGNORE_TARGETS");
 
-  this->TargetsToIgnore.clear();
-  const char* ignoreTargets = mf->GetDefinition("GRAPHVIZ_IGNORE_TARGETS");
-  if ( ignoreTargets )
+  this->TargetsToIgnoreRegex.clear();
+  if (ignoreTargetsRegexes.size() > 0)
     {
-    std::vector<std::string> ignoreTargetsVector;
-    cmSystemTools::ExpandListArgument(ignoreTargets,ignoreTargetsVector);
-    for(std::vector<std::string>::iterator itvIt = ignoreTargetsVector.begin();
-        itvIt != ignoreTargetsVector.end();
+    std::vector<std::string> ignoreTargetsRegExVector;
+    cmSystemTools::ExpandListArgument(ignoreTargetsRegexes,
+                                      ignoreTargetsRegExVector);
+    for(std::vector<std::string>::const_iterator itvIt
+                                            = ignoreTargetsRegExVector.begin();
+        itvIt != ignoreTargetsRegExVector.end();
         ++ itvIt )
       {
-      this->TargetsToIgnore.insert(itvIt->c_str());
+      cmStdString currentRegexString(*itvIt);
+      cmsys::RegularExpression currentRegex;
+      if (!currentRegex.compile(currentRegexString.c_str()))
+        {
+        std::cerr << "Could not compile bad regex \"" << currentRegexString
+                  << "\"" << std::endl;
+        }
+      this->TargetsToIgnoreRegex.push_back(currentRegex);
       }
     }
 
@@ -415,14 +415,22 @@ int cmGraphVizWriter::CollectAllExternalLibs(int cnt)
 
 bool cmGraphVizWriter::IgnoreThisTarget(const char* name)
 {
-  if (this->TargetIgnoreRegex.is_valid())
+  for(std::vector<cmsys::RegularExpression>::iterator itvIt
+                                          = this->TargetsToIgnoreRegex.begin();
+      itvIt != this->TargetsToIgnoreRegex.end();
+      ++ itvIt )
     {
-    if (this->TargetIgnoreRegex.find(name))
+    cmsys::RegularExpression& regEx = *itvIt;
+    if (regEx.is_valid())
       {
-      return true;
+      if (regEx.find(name))
+        {
+        return true;
+        }
       }
     }
-  return (this->TargetsToIgnore.find(name) != this->TargetsToIgnore.end());
+
+  return false;
 }
 
 

+ 1 - 3
Source/cmGraphVizWriter.h

@@ -69,9 +69,7 @@ protected:
   bool GenerateForModuleLibs;
   bool GenerateForExternals;
 
-  cmsys::RegularExpression TargetIgnoreRegex;
-
-  std::set<cmStdString> TargetsToIgnore;
+  std::vector<cmsys::RegularExpression> TargetsToIgnoreRegex;
 
   const std::vector<cmLocalGenerator*>& LocalGenerators;