Ver Fonte

add_library: Allow OBJECT library without dynamic linking (#13289)

When global property TARGET_SUPPORTS_SHARED_LIBS is FALSE we should
still allow OBJECT libraries.  This was an oversight in commit b87d7a60
(Add OBJECT_LIBRARY target type, 2012-03-12).  While at it, fix the
warning message to report context.
Brad King há 13 anos atrás
pai
commit
9a9b3e45e3
1 ficheiros alterados com 8 adições e 7 exclusões
  1. 8 7
      Source/cmAddLibraryCommand.cxx

+ 8 - 7
Source/cmAddLibraryCommand.cxx

@@ -102,16 +102,17 @@ bool cmAddLibraryCommand
     STATIC. But at this point we know only the name of the target, but not
     yet its linker language. */
   if ((type != cmTarget::STATIC_LIBRARY) &&
+      (type != cmTarget::OBJECT_LIBRARY) &&
        (this->Makefile->GetCMakeInstance()->GetPropertyAsBool(
                                       "TARGET_SUPPORTS_SHARED_LIBS") == false))
     {
-    std::string msg = "ADD_LIBRARY for library ";
-    msg += args[0];
-    msg += " is used with the ";
-    msg += type==cmTarget::SHARED_LIBRARY ? "SHARED" : "MODULE";
-    msg += " option, but the target platform supports only STATIC libraries. "
-           "Building it STATIC instead. This may lead to problems.";
-    cmSystemTools::Message(msg.c_str() ,"Warning");
+    cmOStringStream w;
+    w <<
+      "ADD_LIBRARY called with " <<
+      (type==cmTarget::SHARED_LIBRARY ? "SHARED" : "MODULE") <<
+      " option but the target platform does not support dynamic linking. "
+      "Building a STATIC library instead. This may lead to problems.";
+    this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, w.str());
     type = cmTarget::STATIC_LIBRARY;
     }