cmTarget: Refactor GetLocation API

When given a non-NULL configuration the GetLocation returned the
location for the given configuration.  When given a NULL configuration
the GetLocation method returned a location with the build-system
placeholder for the configuration name.  Split the latter use case out
into a separate GetLocationForBuild method and update call sites
accordingly.
This commit is contained in:
Brad King 2014-03-08 07:55:46 -05:00
parent cfc2cf9559
commit f154475b65
5 changed files with 23 additions and 29 deletions

View File

@ -742,7 +742,7 @@ bool cmTargetTraceDependencies::IsUtility(std::string const& dep)
{
// This is really only for compatibility so we do not need to
// worry about configuration names and output names.
std::string tLocation = t->GetLocation(0);
std::string tLocation = t->GetLocationForBuild();
tLocation = cmSystemTools::GetFilenamePath(tLocation);
std::string depLocation = cmSystemTools::GetFilenamePath(dep);
depLocation = cmSystemTools::CollapseFullPath(depLocation.c_str());

View File

@ -76,7 +76,7 @@ void cmGlobalKdevelopGenerator::Generate()
{
if (ti->second.GetType()==cmTarget::EXECUTABLE)
{
executable = ti->second.GetLocation(0);
executable = ti->second.GetLocation("");
break;
}
}

View File

@ -610,7 +610,7 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget const* target,
autogenTargetName.c_str());
return;
}
makefile->AddDefinition("_qt_moc_executable", qt5Moc->GetLocation(0));
makefile->AddDefinition("_qt_moc_executable", qt5Moc->GetLocation(""));
}
else if (strcmp(qtVersion, "4") == 0)
{
@ -621,7 +621,7 @@ void cmQtAutoGenerators::SetupAutoMocTarget(cmTarget const* target,
autogenTargetName.c_str());
return;
}
makefile->AddDefinition("_qt_moc_executable", qt4Moc->GetLocation(0));
makefile->AddDefinition("_qt_moc_executable", qt4Moc->GetLocation(""));
}
else
{
@ -782,7 +782,7 @@ void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget const* target,
}
else
{
makefile->AddDefinition("_qt_uic_executable", qt5Uic->GetLocation(0));
makefile->AddDefinition("_qt_uic_executable", qt5Uic->GetLocation(""));
}
}
else if (strcmp(qtVersion, "4") == 0)
@ -794,7 +794,7 @@ void cmQtAutoGenerators::SetupAutoUicTarget(cmTarget const* target,
targetName.c_str());
return;
}
makefile->AddDefinition("_qt_uic_executable", qt4Uic->GetLocation(0));
makefile->AddDefinition("_qt_uic_executable", qt4Uic->GetLocation(""));
}
else
{
@ -931,7 +931,7 @@ void cmQtAutoGenerators::SetupAutoRccTarget(cmTarget const* target)
targetName.c_str());
return;
}
makefile->AddDefinition("_qt_rcc_executable", qt5Rcc->GetLocation(0));
makefile->AddDefinition("_qt_rcc_executable", qt5Rcc->GetLocation(""));
}
else if (strcmp(qtVersion, "4") == 0)
{
@ -942,7 +942,7 @@ void cmQtAutoGenerators::SetupAutoRccTarget(cmTarget const* target)
targetName.c_str());
return;
}
makefile->AddDefinition("_qt_rcc_executable", qt4Rcc->GetLocation(0));
makefile->AddDefinition("_qt_rcc_executable", qt4Rcc->GetLocation(""));
}
else
{

View File

@ -2458,32 +2458,25 @@ std::string cmTarget::GetCompilePDBDirectory(const char* config) const
//----------------------------------------------------------------------------
const char* cmTarget::GetLocation(const char* config) const
{
static std::string location;
if (this->IsImported())
{
return this->ImportedGetLocation(config);
location = this->ImportedGetFullPath(config, false);
}
else
{
return this->NormalGetLocation(config);
location = this->GetFullPath(config, false);
}
}
//----------------------------------------------------------------------------
const char* cmTarget::ImportedGetLocation(const char* config) const
{
static std::string location;
location = this->ImportedGetFullPath(config, false);
return location.c_str();
}
//----------------------------------------------------------------------------
const char* cmTarget::NormalGetLocation(const char* config) const
const char* cmTarget::GetLocationForBuild() const
{
static std::string location;
// Handle the configuration-specific case first.
if(config)
if(this->IsImported())
{
location = this->GetFullPath(config, false);
location = this->ImportedGetFullPath("", false);
return location.c_str();
}
@ -2503,7 +2496,7 @@ const char* cmTarget::NormalGetLocation(const char* config) const
if(this->IsAppBundleOnApple())
{
std::string macdir = this->BuildMacContentDirectory("", config, false);
std::string macdir = this->BuildMacContentDirectory("", "", false);
if(!macdir.empty())
{
location += "/";
@ -2511,7 +2504,7 @@ const char* cmTarget::NormalGetLocation(const char* config) const
}
}
location += "/";
location += this->GetFullName(config, false);
location += this->GetFullName("", false);
return location.c_str();
}
@ -2659,7 +2652,7 @@ const char *cmTarget::GetProperty(const std::string& prop,
// cannot take into account the per-configuration name of the
// target because the configuration type may not be known at
// CMake time.
this->Properties.SetProperty("LOCATION", this->GetLocation(0),
this->Properties.SetProperty("LOCATION", this->GetLocationForBuild(),
cmProperty::TARGET);
}

View File

@ -331,10 +331,14 @@ public:
std::string GetCompilePDBDirectory(const char* config = 0) const;
/** Get the location of the target in the build tree for the given
configuration. This location is suitable for use as the LOCATION
target property. */
configuration. */
const char* GetLocation(const char* config) const;
/** Get the location of the target in the build tree with a placeholder
referencing the configuration in the native build system. This
location is suitable for use as the LOCATION target property. */
const char* GetLocationForBuild() const;
/** Get the target major and minor version numbers interpreted from
the VERSION property. Version 0 is returned if the property is
not set or cannot be parsed. */
@ -643,9 +647,6 @@ private:
// Get the target base name.
std::string GetOutputName(const char* config, bool implib) const;
const char* ImportedGetLocation(const char* config) const;
const char* NormalGetLocation(const char* config) const;
std::string GetFullNameImported(const char* config, bool implib) const;
std::string ImportedGetFullPath(const char* config, bool implib) const;