Browse Source

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.
Stephen Kelly 12 years ago
parent
commit
030800a78a
1 changed files with 14 additions and 0 deletions
  1. 14 0
      Source/cmTarget.cxx

+ 14 - 0
Source/cmTarget.cxx

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