Move GetLocation to cmGeneratorTarget.

This commit is contained in:
Stephen Kelly 2013-10-28 19:47:46 +01:00
parent c7a8e74b8c
commit 9f2dca805c
8 changed files with 31 additions and 25 deletions

View File

@ -48,7 +48,7 @@ std::string cmCustomCommandGenerator::GetCommand(unsigned int c) const
(target->Target->IsImported() (target->Target->IsImported()
|| !this->LG->GetMakefile()->IsOn("CMAKE_CROSSCOMPILING"))) || !this->LG->GetMakefile()->IsOn("CMAKE_CROSSCOMPILING")))
{ {
return target->Target->GetLocation(this->Config); return target->GetLocation(this->Config);
} }
return this->GE->Parse(argv0)->Evaluate(this->LG->GetMakefile(), return this->GE->Parse(argv0)->Evaluate(this->LG->GetMakefile(),
this->Config); this->Config);

View File

@ -593,7 +593,7 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout,
{ {
cmGeneratorTarget* gt = cmGeneratorTarget* gt =
this->GlobalGenerator->GetGeneratorTarget(target); this->GlobalGenerator->GetGeneratorTarget(target);
location = gt->Target->GetLocation(buildType); location = gt->GetLocation(buildType);
} }
fout<<" <Option output=\"" << location fout<<" <Option output=\"" << location

View File

@ -519,6 +519,26 @@ void cmGeneratorTarget
srcs = data.XamlSources; srcs = data.XamlSources;
} }
//----------------------------------------------------------------------------
const char* cmGeneratorTarget::GetLocation(const std::string& config) const
{
static std::string location;
if (this->Target->IsImported())
{
location = this->Target->ImportedGetFullPath(config, false);
}
else
{
location = this->Target->GetFullPath(config, false);
}
return location.c_str();
}
bool cmGeneratorTarget::IsImported() const
{
return this->Target->IsImported();
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
bool cmGeneratorTarget::IsSystemIncludeDirectory(const std::string& dir, bool cmGeneratorTarget::IsSystemIncludeDirectory(const std::string& dir,
const std::string& config) const const std::string& config) const
@ -834,7 +854,8 @@ bool cmTargetTraceDependencies::IsUtility(std::string const& dep)
} }
// Check for a target with this name. // Check for a target with this name.
if(cmTarget* t = this->Makefile->FindTargetToUse(util)) if(cmGeneratorTarget* t
= this->Makefile->FindGeneratorTargetToUse(util))
{ {
// If we find the target and the dep was given as a full path, // If we find the target and the dep was given as a full path,
// then make sure it was not a full path to something else, and // then make sure it was not a full path to something else, and
@ -846,7 +867,7 @@ bool cmTargetTraceDependencies::IsUtility(std::string const& dep)
{ {
// This is really only for compatibility so we do not need to // This is really only for compatibility so we do not need to
// worry about configuration names and output names. // worry about configuration names and output names.
std::string tLocation = t->GetLocationForBuild(); std::string tLocation = t->Target->GetLocationForBuild();
tLocation = cmSystemTools::GetFilenamePath(tLocation); tLocation = cmSystemTools::GetFilenamePath(tLocation);
std::string depLocation = cmSystemTools::GetFilenamePath(dep); std::string depLocation = cmSystemTools::GetFilenamePath(dep);
depLocation = cmSystemTools::CollapseFullPath(depLocation); depLocation = cmSystemTools::CollapseFullPath(depLocation);

View File

@ -28,6 +28,9 @@ public:
cmLocalGenerator* GetLocalGenerator() const; cmLocalGenerator* GetLocalGenerator() const;
bool IsImported() const;
const char *GetLocation(const std::string& config) const;
int GetType() const; int GetType() const;
std::string GetName() const; std::string GetName() const;
const char *GetProperty(const std::string& prop) const; const char *GetProperty(const std::string& prop) const;

View File

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

View File

@ -1710,7 +1710,7 @@ bool cmLocalGenerator::GetRealDependency(const std::string& inName,
if(target->GetType() >= cmTarget::EXECUTABLE && if(target->GetType() >= cmTarget::EXECUTABLE &&
target->GetType() <= cmTarget::MODULE_LIBRARY) target->GetType() <= cmTarget::MODULE_LIBRARY)
{ {
tLocation = target->Target->GetLocation(config); tLocation = target->GetLocation(config);
tLocation = cmSystemTools::GetFilenamePath(tLocation); tLocation = cmSystemTools::GetFilenamePath(tLocation);
tLocation = cmSystemTools::CollapseFullPath(tLocation); tLocation = cmSystemTools::CollapseFullPath(tLocation);
} }
@ -1733,7 +1733,7 @@ bool cmLocalGenerator::GetRealDependency(const std::string& inName,
case cmTarget::SHARED_LIBRARY: case cmTarget::SHARED_LIBRARY:
case cmTarget::MODULE_LIBRARY: case cmTarget::MODULE_LIBRARY:
case cmTarget::UNKNOWN_LIBRARY: case cmTarget::UNKNOWN_LIBRARY:
dep = target->Target->GetLocation(config); dep = target->GetLocation(config);
return true; return true;
case cmTarget::OBJECT_LIBRARY: case cmTarget::OBJECT_LIBRARY:
// An object library has no single file on which to depend. // An object library has no single file on which to depend.

View File

@ -2738,21 +2738,6 @@ std::string cmTarget::GetCompilePDBDirectory(const std::string& config) const
return ""; return "";
} }
//----------------------------------------------------------------------------
const char* cmTarget::GetLocation(const std::string& config) const
{
static std::string location;
if (this->IsImported())
{
location = this->ImportedGetFullPath(config, false);
}
else
{
location = this->GetFullPath(config, false);
}
return location.c_str();
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
const char* cmTarget::ImportedGetLocation(const std::string& config) const const char* cmTarget::ImportedGetLocation(const std::string& config) const
{ {

View File

@ -374,9 +374,6 @@ public:
compiler pdb output directory is given. */ compiler pdb output directory is given. */
std::string GetCompilePDBDirectory(const std::string& config = "") const; std::string GetCompilePDBDirectory(const std::string& config = "") const;
/** Get the location of the target in the build tree for the given
configuration. */
const char* GetLocation(const std::string& config) const;
const char* ImportedGetLocation(const std::string& config) const; const char* ImportedGetLocation(const std::string& config) const;
/** Get the location of the target in the build tree with a placeholder /** Get the location of the target in the build tree with a placeholder