ENH: fix from main tree
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index ff5b759..8dccb13 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -954,11 +954,16 @@
         }
       }
       }
-    // make sure the tpye is correct
+    // make sure the type is correct if it is currently
+    // general.  So if you do a 
+    // target_link_libraries(foo optimized bar) it will stay
+    // optimized and not use the lookup.   As there maybe the
+    // case where someone has specifed that a library is both
+    // debug and optimized.
     std::string linkType = lib;
     linkType += "_LINK_TYPE";
     const char* linkTypeString = this->GetDefinition( linkType.c_str() );
-    if(linkTypeString)
+    if(llt == cmTarget::GENERAL &&  linkTypeString)
       {
       if(strcmp(linkTypeString, "debug") == 0)
         {