cmTargetPropertyComputer::GetProperty: return cmProp

This commit is contained in:
Vitaly Stakhovsky
2020-03-16 13:45:00 -04:00
parent 6f4b1ba96d
commit fad0ee5404
3 changed files with 23 additions and 19 deletions
+14 -12
View File
@@ -14,15 +14,17 @@
class cmMessenger;
using cmProp = const std::string*;
class cmTargetPropertyComputer
{
public:
template <typename Target>
static const char* GetProperty(Target const* tgt, const std::string& prop,
cmMessenger* messenger,
cmListFileBacktrace const& context)
static cmProp GetProperty(Target const* tgt, const std::string& prop,
cmMessenger* messenger,
cmListFileBacktrace const& context)
{
if (const char* loc = GetLocation(tgt, prop, messenger, context)) {
if (cmProp loc = GetLocation(tgt, prop, messenger, context)) {
return loc;
}
if (cmSystemTools::GetFatalErrorOccured()) {
@@ -52,9 +54,9 @@ private:
std::string const& config);
template <typename Target>
static const char* GetLocation(Target const* tgt, std::string const& prop,
cmMessenger* messenger,
cmListFileBacktrace const& context)
static cmProp GetLocation(Target const* tgt, std::string const& prop,
cmMessenger* messenger,
cmListFileBacktrace const& context)
{
// Watch for special "computed" properties that are dependent on
@@ -71,7 +73,7 @@ private:
context)) {
return nullptr;
}
return ComputeLocationForBuild(tgt).c_str();
return &ComputeLocationForBuild(tgt);
}
// Support "LOCATION_<CONFIG>".
@@ -82,7 +84,7 @@ private:
return nullptr;
}
std::string configName = prop.substr(9);
return ComputeLocation(tgt, configName).c_str();
return &ComputeLocation(tgt, configName);
}
// Support "<CONFIG>_LOCATION".
@@ -95,7 +97,7 @@ private:
context)) {
return nullptr;
}
return ComputeLocation(tgt, configName).c_str();
return &ComputeLocation(tgt, configName);
}
}
}
@@ -103,8 +105,8 @@ private:
}
template <typename Target>
static const char* GetSources(Target const* tgt, cmMessenger* messenger,
cmListFileBacktrace const& context);
static cmProp GetSources(Target const* tgt, cmMessenger* messenger,
cmListFileBacktrace const& context);
};
#endif