ENH: Do not generate install target unless some INSTALL or INSTALL_* commands have been used. This addresses bug#2827.

This commit is contained in:
Brad King 2006-08-31 10:47:00 -04:00
parent 8ffb32369f
commit 239fce5caa
6 changed files with 82 additions and 52 deletions

View File

@ -42,6 +42,9 @@ cmGlobalGenerator::cmGlobalGenerator()
// Relative paths are not configured in the constructor.
this->RelativePathsConfigured = false;
// Whether an install target is needed.
this->InstallTargetEnabled = false;
}
cmGlobalGenerator::~cmGlobalGenerator()
@ -927,6 +930,11 @@ void cmGlobalGenerator::AddInstallComponent(const char* component)
}
}
void cmGlobalGenerator::EnableInstallTarget()
{
this->InstallTargetEnabled = true;
}
cmLocalGenerator *cmGlobalGenerator::CreateLocalGenerator()
{
cmLocalGenerator *lg = new cmLocalGenerator;
@ -1448,6 +1456,8 @@ void cmGlobalGenerator::CreateDefaultGlobalTargets(cmTargets* targets)
}
//Install
if(this->InstallTargetEnabled)
{
std::string cmd;
cpackCommandLines.erase(cpackCommandLines.begin(), cpackCommandLines.end());
singleLine.erase(singleLine.begin(), singleLine.end());
@ -1510,6 +1520,7 @@ void cmGlobalGenerator::CreateDefaultGlobalTargets(cmTargets* targets)
&cpackCommandLines, depends);
}
}
}
cmTarget cmGlobalGenerator::CreateGlobalTarget(
const char* name, const char* message,

View File

@ -123,6 +123,7 @@ public:
void AddLocalGenerator(cmLocalGenerator *lg);
void AddInstallComponent(const char* component);
void EnableInstallTarget();
static int s_TryCompileTimeout;
@ -221,6 +222,7 @@ protected:
// Set of named installation components requested by the project.
std::set<cmStdString> InstallComponents;
bool InstallTargetEnabled;
// Manifest of all targets that will be built for each configuration.
// This is computed just before local generators generate.

View File

@ -33,6 +33,10 @@ bool cmInstallCommand::InitialPass(std::vector<std::string> const& args)
return true;
}
// Enable the install target.
this->Makefile->GetLocalGenerator()
->GetGlobalGenerator()->EnableInstallTarget();
// Switch among the command modes.
if(args[0] == "SCRIPT")
{

View File

@ -25,6 +25,11 @@ bool cmInstallFilesCommand
this->SetError("called with incorrect number of arguments");
return false;
}
// Enable the install target.
this->Makefile->GetLocalGenerator()
->GetGlobalGenerator()->EnableInstallTarget();
std::vector<std::string> args;
this->Makefile->ExpandSourceListArguments(argsIn, args, 2);

View File

@ -26,6 +26,10 @@ bool cmInstallProgramsCommand
return false;
}
// Enable the install target.
this->Makefile->GetLocalGenerator()
->GetGlobalGenerator()->EnableInstallTarget();
// Create an INSTALL_PROGRAMS target specifically for this path.
this->TargetName = "INSTALL_PROGRAMS_"+args[0];
cmTarget& target = this->Makefile->GetTargets()[this->TargetName];

View File

@ -26,6 +26,10 @@ bool cmInstallTargetsCommand
return false;
}
// Enable the install target.
this->Makefile->GetLocalGenerator()
->GetGlobalGenerator()->EnableInstallTarget();
cmTargets &tgts = this->Makefile->GetTargets();
std::vector<std::string>::const_iterator s = args.begin();
++s;