diff options
Diffstat (limited to 'Source/cmInstallDirectoryGenerator.cxx')
-rw-r--r-- | Source/cmInstallDirectoryGenerator.cxx | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/Source/cmInstallDirectoryGenerator.cxx b/Source/cmInstallDirectoryGenerator.cxx index 175e7cf0b..4eb5f69e4 100644 --- a/Source/cmInstallDirectoryGenerator.cxx +++ b/Source/cmInstallDirectoryGenerator.cxx @@ -16,9 +16,9 @@ cmInstallDirectoryGenerator::cmInstallDirectoryGenerator( std::string file_permissions, std::string dir_permissions, std::vector<std::string> const& configurations, std::string const& component, MessageLevel message, bool exclude_from_all, std::string literal_args, - bool optional) + bool optional, cmListFileBacktrace backtrace) : cmInstallGenerator(dest, configurations, component, message, - exclude_from_all) + exclude_from_all, std::move(backtrace)) , LocalGenerator(nullptr) , Directories(dirs) , FilePermissions(std::move(file_permissions)) @@ -27,7 +27,7 @@ cmInstallDirectoryGenerator::cmInstallDirectoryGenerator( , Optional(optional) { // We need per-config actions if destination have generator expressions. - if (cmGeneratorExpression::Find(Destination) != std::string::npos) { + if (cmGeneratorExpression::Find(this->Destination) != std::string::npos) { this->ActionsPerConfig = true; } @@ -50,6 +50,22 @@ bool cmInstallDirectoryGenerator::Compute(cmLocalGenerator* lg) return true; } +std::vector<std::string> cmInstallDirectoryGenerator::GetDirectories( + std::string const& config) const +{ + std::vector<std::string> directories; + if (this->ActionsPerConfig) { + for (std::string const& f : this->Directories) { + cmExpandList( + cmGeneratorExpression::Evaluate(f, this->LocalGenerator, config), + directories); + } + } else { + directories = this->Directories; + } + return directories; +} + void cmInstallDirectoryGenerator::GenerateScriptActions(std::ostream& os, Indent indent) { @@ -63,11 +79,7 @@ void cmInstallDirectoryGenerator::GenerateScriptActions(std::ostream& os, void cmInstallDirectoryGenerator::GenerateScriptForConfig( std::ostream& os, const std::string& config, Indent indent) { - std::vector<std::string> dirs; - for (std::string const& d : this->Directories) { - cmExpandList( - cmGeneratorExpression::Evaluate(d, this->LocalGenerator, config), dirs); - } + std::vector<std::string> dirs = this->GetDirectories(config); // Make sure all dirs have absolute paths. cmMakefile const& mf = *this->LocalGenerator->GetMakefile(); |