ENH: Add support for displaying the list of components

This commit is contained in:
Andy Cedilnik 2006-10-30 15:59:54 -05:00
parent b2240ef6af
commit 7ded253013
4 changed files with 59 additions and 3 deletions

View File

@ -1395,12 +1395,16 @@ void cmGlobalGenerator::CreateDefaultGlobalTargets(cmTargets* targets)
singleLine.erase(singleLine.begin(), singleLine.end()); singleLine.erase(singleLine.begin(), singleLine.end());
depends.erase(depends.begin(), depends.end()); depends.erase(depends.begin(), depends.end());
singleLine.push_back(this->GetCMakeInstance()->GetCTestCommand()); singleLine.push_back(this->GetCMakeInstance()->GetCTestCommand());
singleLine.push_back("--force-new-ctest-process");
if(cmakeCfgIntDir && *cmakeCfgIntDir && cmakeCfgIntDir[0] != '.') if(cmakeCfgIntDir && *cmakeCfgIntDir && cmakeCfgIntDir[0] != '.')
{ {
singleLine.push_back("-C"); singleLine.push_back("-C");
singleLine.push_back(mf->GetDefinition("CMAKE_CFG_INTDIR")); singleLine.push_back(mf->GetDefinition("CMAKE_CFG_INTDIR"));
} }
singleLine.push_back("--force-new-ctest-process"); else // TODO: This is a hack. Should be something to do with the generator
{
singleLine.push_back("$(ARGS)");
}
cpackCommandLines.push_back(singleLine); cpackCommandLines.push_back(singleLine);
(*targets)[this->GetTestTargetName()] (*targets)[this->GetTestTargetName()]
= this->CreateGlobalTarget(this->GetTestTargetName(), = this->CreateGlobalTarget(this->GetTestTargetName(),
@ -1464,9 +1468,40 @@ void cmGlobalGenerator::CreateDefaultGlobalTargets(cmTargets* targets)
//Install //Install
if(this->InstallTargetEnabled) if(this->InstallTargetEnabled)
{ {
if(!cmakeCfgIntDir || !*cmakeCfgIntDir || cmakeCfgIntDir[0] == '.')
{
std::set<cmStdString>* componentsSet
= this->GetCMakeInstance()->GetInstallComponents();
cpackCommandLines.erase(cpackCommandLines.begin(),
cpackCommandLines.end());
depends.erase(depends.begin(), depends.end());
cmOStringStream ostr;
if ( componentsSet->size() > 0 )
{
ostr << "Available install components are:";
std::set<cmStdString>::iterator it;
for (
it = componentsSet->begin();
it != componentsSet->end();
++ it )
{
ostr << " \"" << it->c_str() << "\"";
}
}
else
{
ostr << "Only default component available";
}
singleLine.push_back(ostr.str().c_str());
//cpackCommandLines.push_back(singleLine);
(*targets)["list_install_components"]
= this->CreateGlobalTarget("list_install_components",
ostr.str().c_str(),
&cpackCommandLines, depends);
}
std::string cmd; std::string cmd;
cpackCommandLines.erase(cpackCommandLines.begin(), cpackCommandLines.erase(cpackCommandLines.begin(),
cpackCommandLines.end()); cpackCommandLines.end());
singleLine.erase(singleLine.begin(), singleLine.end()); singleLine.erase(singleLine.begin(), singleLine.end());
depends.erase(depends.begin(), depends.end()); depends.erase(depends.begin(), depends.end());
if ( this->GetPreinstallTargetName() ) if ( this->GetPreinstallTargetName() )
@ -1518,7 +1553,7 @@ void cmGlobalGenerator::CreateDefaultGlobalTargets(cmTargets* targets)
{ {
singleLine.insert(singleLine.begin()+1, "-DCMAKE_INSTALL_LOCAL_ONLY=1"); singleLine.insert(singleLine.begin()+1, "-DCMAKE_INSTALL_LOCAL_ONLY=1");
cpackCommandLines.erase(cpackCommandLines.begin(), cpackCommandLines.erase(cpackCommandLines.begin(),
cpackCommandLines.end()); cpackCommandLines.end());
cpackCommandLines.push_back(singleLine); cpackCommandLines.push_back(singleLine);
(*targets)[install_local] = (*targets)[install_local] =

View File

@ -33,6 +33,7 @@ cmInstallTargetGenerator
Component(component), Optional(optional) Component(component), Optional(optional)
{ {
this->Target->SetHaveInstallRule(true); this->Target->SetHaveInstallRule(true);
this->Target->GetMakefile()->GetCMakeInstance()->AddInstallComponent(component);
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------

View File

@ -1307,6 +1307,18 @@ int cmake::ExecuteCMakeCommand(std::vector<std::string>& args)
return 1; return 1;
} }
//----------------------------------------------------------------------------
void cmake::AddInstallComponent(const char* component)
{
if ( !component )
{
return;
}
this->InstallComponents.insert(component);
}
//----------------------------------------------------------------------------
void cmake::GetRegisteredGenerators(std::vector<std::string>& names) void cmake::GetRegisteredGenerators(std::vector<std::string>& names)
{ {
for(RegisteredGeneratorsMap::const_iterator i = this->Generators.begin(); for(RegisteredGeneratorsMap::const_iterator i = this->Generators.begin();

View File

@ -284,6 +284,12 @@ class cmake
// Do we want debug output during the cmake run. // Do we want debug output during the cmake run.
bool GetDebugOutput() { return this->DebugOutput; } bool GetDebugOutput() { return this->DebugOutput; }
void DebugOutputOn() { this->DebugOutput = true;} void DebugOutputOn() { this->DebugOutput = true;}
//! Add or get installation components
void AddInstallComponent(const char* component);
std::set<cmStdString>* GetInstallComponents()
{ return &this->InstallComponents; }
protected: protected:
typedef cmGlobalGenerator* (*CreateGeneratorFunctionType)(); typedef cmGlobalGenerator* (*CreateGeneratorFunctionType)();
typedef std::map<cmStdString, typedef std::map<cmStdString,
@ -302,6 +308,8 @@ protected:
std::set<cmStdString> WrittenFiles; std::set<cmStdString> WrittenFiles;
std::set<cmStdString> InstallComponents;
///! return true if the same cmake was used to make the cache. ///! return true if the same cmake was used to make the cache.
bool CacheVersionMatches(); bool CacheVersionMatches();
///! read in a cmake list file to initialize the cache ///! read in a cmake list file to initialize the cache