mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-03 04:40:18 -05:00
install: Allow generator expressions in FILES DESTINATION
This commit is contained in:
@@ -34,6 +34,12 @@ cmInstallFilesGenerator
|
||||
Programs(programs),
|
||||
Optional(optional)
|
||||
{
|
||||
// We need per-config actions if the destination has generator expressions.
|
||||
if(cmGeneratorExpression::Find(Destination) != std::string::npos)
|
||||
{
|
||||
this->ActionsPerConfig = true;
|
||||
}
|
||||
|
||||
// We need per-config actions if any files have generator expressions.
|
||||
for(std::vector<std::string>::const_iterator i = files.begin();
|
||||
!this->ActionsPerConfig && i != files.end(); ++i)
|
||||
@@ -56,15 +62,26 @@ void cmInstallFilesGenerator::Compute(cmLocalGenerator* lg)
|
||||
this->LocalGenerator = lg;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
std::string
|
||||
cmInstallFilesGenerator::GetDestination(std::string const& config) const
|
||||
{
|
||||
cmGeneratorExpression ge;
|
||||
return ge.Parse(this->Destination)
|
||||
->Evaluate(this->LocalGenerator->GetMakefile(), config);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmInstallFilesGenerator::AddFilesInstallRule(
|
||||
std::ostream& os, Indent const& indent,
|
||||
std::ostream& os,
|
||||
const std::string config,
|
||||
Indent const& indent,
|
||||
std::vector<std::string> const& files)
|
||||
{
|
||||
// Write code to install the files.
|
||||
const char* no_dir_permissions = 0;
|
||||
this->AddInstallRule(os,
|
||||
this->Destination,
|
||||
this->GetDestination(config),
|
||||
(this->Programs
|
||||
? cmInstallType_PROGRAMS
|
||||
: cmInstallType_FILES),
|
||||
@@ -84,7 +101,7 @@ void cmInstallFilesGenerator::GenerateScriptActions(std::ostream& os,
|
||||
}
|
||||
else
|
||||
{
|
||||
this->AddFilesInstallRule(os, indent, this->Files);
|
||||
this->AddFilesInstallRule(os, "", indent, this->Files);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,5 +119,5 @@ void cmInstallFilesGenerator::GenerateScriptForConfig(std::ostream& os,
|
||||
cmSystemTools::ExpandListArgument(cge->Evaluate(
|
||||
this->LocalGenerator->GetMakefile(), config), files);
|
||||
}
|
||||
this->AddFilesInstallRule(os, indent, files);
|
||||
this->AddFilesInstallRule(os, config, indent, files);
|
||||
}
|
||||
|
||||
@@ -32,12 +32,16 @@ public:
|
||||
|
||||
void Compute(cmLocalGenerator* lg);
|
||||
|
||||
std::string GetDestination(std::string const& config) const;
|
||||
|
||||
protected:
|
||||
virtual void GenerateScriptActions(std::ostream& os, Indent const& indent);
|
||||
virtual void GenerateScriptForConfig(std::ostream& os,
|
||||
const std::string& config,
|
||||
Indent const& indent);
|
||||
void AddFilesInstallRule(std::ostream& os, Indent const& indent,
|
||||
void AddFilesInstallRule(std::ostream& os,
|
||||
const std::string config,
|
||||
Indent const& indent,
|
||||
std::vector<std::string> const& files);
|
||||
|
||||
cmLocalGenerator* LocalGenerator;
|
||||
|
||||
Reference in New Issue
Block a user