cmTarget: Add a template to create correct implied content.

Otherwise, in the string case, we would get a null pointer instead
of the implied empty string. That will become relevant when the
comparison result is used.
This commit is contained in:
Stephen Kelly 2013-10-22 19:29:57 +02:00
parent e48faced66
commit 030800a78a
1 changed files with 14 additions and 0 deletions

View File

@ -4472,6 +4472,19 @@ bool consistentProperty(const char *lhs, const char *rhs)
return strcmp(lhs, rhs) == 0;
}
template<typename PropertyType>
PropertyType impliedValue(PropertyType);
template<>
bool impliedValue<bool>(bool)
{
return false;
}
template<>
const char* impliedValue<const char*>(const char*)
{
return "";
}
//----------------------------------------------------------------------------
template<typename PropertyType>
PropertyType checkInterfacePropertyCompatibility(cmTarget *tgt,
@ -4547,6 +4560,7 @@ PropertyType checkInterfacePropertyCompatibility(cmTarget *tgt,
}
else if (impliedByUse)
{
propContent = impliedValue<PropertyType>(propContent);
if (ifaceIsSet)
{
if (!consistentProperty(propContent, ifacePropContent))