diff --git a/Source/cmInstallDirectoryGenerator.cxx b/Source/cmInstallDirectoryGenerator.cxx index 0b45f28aac..2c5b9c62e6 100644 --- a/Source/cmInstallDirectoryGenerator.cxx +++ b/Source/cmInstallDirectoryGenerator.cxx @@ -50,6 +50,22 @@ bool cmInstallDirectoryGenerator::Compute(cmLocalGenerator* lg) return true; } +std::vector cmInstallDirectoryGenerator::GetDirectories( + std::string const& config) const +{ + std::vector 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 dirs; - for (std::string const& d : this->Directories) { - cmExpandList( - cmGeneratorExpression::Evaluate(d, this->LocalGenerator, config), dirs); - } + std::vector dirs = this->GetDirectories(config); // Make sure all dirs have absolute paths. cmMakefile const& mf = *this->LocalGenerator->GetMakefile(); diff --git a/Source/cmInstallDirectoryGenerator.h b/Source/cmInstallDirectoryGenerator.h index af310f3999..7c707bd0e5 100644 --- a/Source/cmInstallDirectoryGenerator.h +++ b/Source/cmInstallDirectoryGenerator.h @@ -32,6 +32,9 @@ public: bool Compute(cmLocalGenerator* lg) override; std::string GetDestination(std::string const& config) const; + std::vector GetDirectories(std::string const& config) const; + + bool GetOptional() const { return this->Optional; } protected: void GenerateScriptActions(std::ostream& os, Indent indent) override;