|
|
@@ -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
|