瀏覽代碼

Record set of targets used in cmGeneratorExpression

Brad King 15 年之前
父節點
當前提交
4749e4cb76
共有 2 個文件被更改,包括 7 次插入0 次删除
  1. 1 0
      Source/cmGeneratorExpression.cxx
  2. 6 0
      Source/cmGeneratorExpression.h

+ 1 - 0
Source/cmGeneratorExpression.cxx

@@ -141,6 +141,7 @@ bool cmGeneratorExpression::EvaluateTargetInfo(std::string& result)
     result = "Target \"" + name + "\" is not an executable or library.";
     return false;
     }
+  this->Targets.insert(target);
 
   // Lookup the target file with the given purpose.
   std::string purpose = this->TargetInfo.match(1);

+ 6 - 0
Source/cmGeneratorExpression.h

@@ -15,6 +15,7 @@
 
 #include <cmsys/RegularExpression.hxx>
 
+class cmTarget;
 class cmMakefile;
 class cmListFileBacktrace;
 
@@ -38,6 +39,10 @@ public:
   /** Evaluate generator expressions in a string.  */
   const char* Process(std::string const& input);
   const char* Process(const char* input);
+
+  /** Get set of targets found during evaluations.  */
+  std::set<cmTarget*> const& GetTargets() const
+    { return this->Targets; }
 private:
   cmMakefile* Makefile;
   const char* Config;
@@ -46,6 +51,7 @@ private:
   std::vector<char> Data;
   std::stack<size_t> Barriers;
   cmsys::RegularExpression TargetInfo;
+  std::set<cmTarget*> Targets;
   bool Evaluate();
   bool Evaluate(const char* expr, std::string& result);
   bool EvaluateTargetInfo(std::string& result);