cmTarget: Inline the essential part of imported target location.
This commit is contained in:
parent
a892b285f8
commit
5794dbc301
@ -2091,13 +2091,75 @@ const char* cmTarget::GetPrefixVariableInternal(bool implib) const
|
|||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string
|
std::string
|
||||||
cmTarget::ImportedGetFullPath(const std::string& config, bool implib) const
|
cmTarget::ImportedGetFullPath(const std::string& config, bool pimplib) const
|
||||||
{
|
{
|
||||||
std::string result;
|
assert(this->IsImported());
|
||||||
if(cmTarget::ImportInfo const* info = this->GetImportInfo(config))
|
|
||||||
|
// Lookup/compute/cache the import information for this
|
||||||
|
// configuration.
|
||||||
|
std::string config_upper;
|
||||||
|
if(!config.empty())
|
||||||
{
|
{
|
||||||
result = implib? info->ImportLibrary : info->Location;
|
config_upper = cmSystemTools::UpperCase(config);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
config_upper = "NOCONFIG";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string result;
|
||||||
|
|
||||||
|
const char* loc = 0;
|
||||||
|
const char* imp = 0;
|
||||||
|
std::string suffix;
|
||||||
|
|
||||||
|
if(this->GetType() != cmState::INTERFACE_LIBRARY
|
||||||
|
&& this->GetMappedConfig(config_upper, &loc, &imp, suffix))
|
||||||
|
{
|
||||||
|
if (!pimplib)
|
||||||
|
{
|
||||||
|
if(loc)
|
||||||
|
{
|
||||||
|
result = loc;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::string impProp = "IMPORTED_LOCATION";
|
||||||
|
impProp += suffix;
|
||||||
|
if(const char* config_location = this->GetProperty(impProp))
|
||||||
|
{
|
||||||
|
result = config_location;
|
||||||
|
}
|
||||||
|
else if(const char* location =
|
||||||
|
this->GetProperty("IMPORTED_LOCATION"))
|
||||||
|
{
|
||||||
|
result = location;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(imp)
|
||||||
|
{
|
||||||
|
result = imp;
|
||||||
|
}
|
||||||
|
else if(this->GetType() == cmState::SHARED_LIBRARY ||
|
||||||
|
this->IsExecutableWithExports())
|
||||||
|
{
|
||||||
|
std::string impProp = "IMPORTED_IMPLIB";
|
||||||
|
impProp += suffix;
|
||||||
|
if(const char* config_implib = this->GetProperty(impProp))
|
||||||
|
{
|
||||||
|
result = config_implib;
|
||||||
|
}
|
||||||
|
else if(const char* implib = this->GetProperty("IMPORTED_IMPLIB"))
|
||||||
|
{
|
||||||
|
result = implib;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(result.empty())
|
if(result.empty())
|
||||||
{
|
{
|
||||||
result = this->GetName();
|
result = this->GetName();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user