summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2010-12-08 18:34:05 (GMT)
committerBrad King <brad.king@kitware.com>2010-12-15 19:53:46 (GMT)
commit4749e4cb76cc1e23cb23f37ceec2e856a18218ce (patch)
treeb7de05b3bf3564243a31cfb398d256328c6f85fa /Source
parentef9e9de0b80a08bb9290fce3816ff621d2ff3419 (diff)
downloadCMake-4749e4cb76cc1e23cb23f37ceec2e856a18218ce.zip
CMake-4749e4cb76cc1e23cb23f37ceec2e856a18218ce.tar.gz
CMake-4749e4cb76cc1e23cb23f37ceec2e856a18218ce.tar.bz2
Record set of targets used in cmGeneratorExpression
Diffstat (limited to 'Source')
-rw-r--r--Source/cmGeneratorExpression.cxx1
-rw-r--r--Source/cmGeneratorExpression.h6
2 files changed, 7 insertions, 0 deletions
diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx
index 971cad2..8710dfc 100644
--- a/Source/cmGeneratorExpression.cxx
+++ b/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);
diff --git a/Source/cmGeneratorExpression.h b/Source/cmGeneratorExpression.h
index 9bed780..1a9d4c6 100644
--- a/Source/cmGeneratorExpression.h
+++ b/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);