ENH: Add support for displaying the list of components
This commit is contained in:
parent
b2240ef6af
commit
7ded253013
|
@ -1395,12 +1395,16 @@ void cmGlobalGenerator::CreateDefaultGlobalTargets(cmTargets* targets)
|
|||
singleLine.erase(singleLine.begin(), singleLine.end());
|
||||
depends.erase(depends.begin(), depends.end());
|
||||
singleLine.push_back(this->GetCMakeInstance()->GetCTestCommand());
|
||||
singleLine.push_back("--force-new-ctest-process");
|
||||
if(cmakeCfgIntDir && *cmakeCfgIntDir && cmakeCfgIntDir[0] != '.')
|
||||
{
|
||||
singleLine.push_back("-C");
|
||||
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);
|
||||
(*targets)[this->GetTestTargetName()]
|
||||
= this->CreateGlobalTarget(this->GetTestTargetName(),
|
||||
|
@ -1464,9 +1468,40 @@ void cmGlobalGenerator::CreateDefaultGlobalTargets(cmTargets* targets)
|
|||
//Install
|
||||
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;
|
||||
cpackCommandLines.erase(cpackCommandLines.begin(),
|
||||
cpackCommandLines.end());
|
||||
cpackCommandLines.end());
|
||||
singleLine.erase(singleLine.begin(), singleLine.end());
|
||||
depends.erase(depends.begin(), depends.end());
|
||||
if ( this->GetPreinstallTargetName() )
|
||||
|
@ -1518,7 +1553,7 @@ void cmGlobalGenerator::CreateDefaultGlobalTargets(cmTargets* targets)
|
|||
{
|
||||
singleLine.insert(singleLine.begin()+1, "-DCMAKE_INSTALL_LOCAL_ONLY=1");
|
||||
cpackCommandLines.erase(cpackCommandLines.begin(),
|
||||
cpackCommandLines.end());
|
||||
cpackCommandLines.end());
|
||||
cpackCommandLines.push_back(singleLine);
|
||||
|
||||
(*targets)[install_local] =
|
||||
|
|
|
@ -33,6 +33,7 @@ cmInstallTargetGenerator
|
|||
Component(component), Optional(optional)
|
||||
{
|
||||
this->Target->SetHaveInstallRule(true);
|
||||
this->Target->GetMakefile()->GetCMakeInstance()->AddInstallComponent(component);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
|
|
@ -1307,6 +1307,18 @@ int cmake::ExecuteCMakeCommand(std::vector<std::string>& args)
|
|||
return 1;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmake::AddInstallComponent(const char* component)
|
||||
{
|
||||
if ( !component )
|
||||
{
|
||||
return;
|
||||
}
|
||||
this->InstallComponents.insert(component);
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmake::GetRegisteredGenerators(std::vector<std::string>& names)
|
||||
{
|
||||
for(RegisteredGeneratorsMap::const_iterator i = this->Generators.begin();
|
||||
|
|
|
@ -284,6 +284,12 @@ class cmake
|
|||
// Do we want debug output during the cmake run.
|
||||
bool GetDebugOutput() { return this->DebugOutput; }
|
||||
void DebugOutputOn() { this->DebugOutput = true;}
|
||||
|
||||
//! Add or get installation components
|
||||
void AddInstallComponent(const char* component);
|
||||
std::set<cmStdString>* GetInstallComponents()
|
||||
{ return &this->InstallComponents; }
|
||||
|
||||
protected:
|
||||
typedef cmGlobalGenerator* (*CreateGeneratorFunctionType)();
|
||||
typedef std::map<cmStdString,
|
||||
|
@ -302,6 +308,8 @@ protected:
|
|||
|
||||
std::set<cmStdString> WrittenFiles;
|
||||
|
||||
std::set<cmStdString> InstallComponents;
|
||||
|
||||
///! return true if the same cmake was used to make the cache.
|
||||
bool CacheVersionMatches();
|
||||
///! read in a cmake list file to initialize the cache
|
||||
|
|
Loading…
Reference in New Issue