diff options
author | Stephen Kelly <steveire@gmail.com> | 2014-03-07 16:20:10 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-03-20 13:21:56 (GMT) |
commit | bbffccca42d4f209220e833e1a86e735a5c83339 (patch) | |
tree | 2c59eda71ee2691eab3a5b922b17d91586b019c5 /Source/cmCustomCommandGenerator.cxx | |
parent | fb4aff058d2595078300b682dc477f0ccba6d31b (diff) | |
download | CMake-bbffccca42d4f209220e833e1a86e735a5c83339.zip CMake-bbffccca42d4f209220e833e1a86e735a5c83339.tar.gz CMake-bbffccca42d4f209220e833e1a86e735a5c83339.tar.bz2 |
add_custom_command: Evaluate generator expressions in DEPENDS
Rely on evaluation in cmCustomCommandGenerator for the generators.
When tracing target dependencies, depend on the union of dependencies
for all configurations.
Diffstat (limited to 'Source/cmCustomCommandGenerator.cxx')
-rw-r--r-- | Source/cmCustomCommandGenerator.cxx | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/Source/cmCustomCommandGenerator.cxx b/Source/cmCustomCommandGenerator.cxx index a091cff..cebd9f5 100644 --- a/Source/cmCustomCommandGenerator.cxx +++ b/Source/cmCustomCommandGenerator.cxx @@ -21,7 +21,7 @@ cmCustomCommandGenerator::cmCustomCommandGenerator( cmCustomCommand const& cc, const std::string& config, cmMakefile* mf): CC(cc), Config(config), Makefile(mf), LG(mf->GetLocalGenerator()), OldStyle(cc.GetEscapeOldStyle()), MakeVars(cc.GetEscapeAllowMakeVars()), - GE(new cmGeneratorExpression(cc.GetBacktrace())) + GE(new cmGeneratorExpression(cc.GetBacktrace())), DependsDone(false) { } @@ -93,5 +93,19 @@ std::vector<std::string> const& cmCustomCommandGenerator::GetOutputs() const //---------------------------------------------------------------------------- std::vector<std::string> const& cmCustomCommandGenerator::GetDepends() const { - return this->CC.GetDepends(); + if (!this->DependsDone) + { + this->DependsDone = true; + std::vector<std::string> depends = this->CC.GetDepends(); + for(std::vector<std::string>::const_iterator + i = depends.begin(); + i != depends.end(); ++i) + { + cmsys::auto_ptr<cmCompiledGeneratorExpression> cge + = this->GE->Parse(*i); + cmSystemTools::ExpandListArgument( + cge->Evaluate(this->Makefile, this->Config), this->Depends); + } + } + return this->Depends; } |