瀏覽代碼

ENH: Added support for linking to MS .lib libraries in MinGW.

Brad King 20 年之前
父節點
當前提交
0376fe4b9b
共有 2 個文件被更改,包括 15 次插入1 次删除
  1. 2 1
      Modules/Platform/Windows-gcc.cmake
  2. 13 0
      Source/cmLocalGenerator.cxx

+ 2 - 1
Modules/Platform/Windows-gcc.cmake

@@ -17,10 +17,11 @@ SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "")       # -rpath
 SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP "")   # : or empty
 SET(CMAKE_LIBRARY_PATH_FLAG "-L")
 SET(CMAKE_LINK_LIBRARY_FLAG "-l")
+SET(CMAKE_EXTRA_LINK_EXTENSIONS ".lib") # MinGW can also link to a MS .lib
 
 IF(MINGW)
   SET(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
-  SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dll" ".dll.a" ".a")
+  SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dll" ".dll.a" ".a" ".lib")
 ENDIF(MINGW)
 
 SET(CMAKE_C_CREATE_SHARED_MODULE

+ 13 - 0
Source/cmLocalGenerator.cxx

@@ -1318,8 +1318,21 @@ cmLocalGenerator::ComputeLinkInformation(cmTarget& target,
     this->Makefile->GetDefinition("CMAKE_STATIC_LIBRARY_SUFFIX"));
   orderLibs.AddLinkExtension(
     this->Makefile->GetDefinition("CMAKE_SHARED_LIBRARY_SUFFIX"));
+  orderLibs.AddLinkExtension(
+    this->Makefile->GetDefinition("CMAKE_IMPORT_LIBRARY_SUFFIX"));
   orderLibs.AddLinkExtension(
     this->Makefile->GetDefinition("CMAKE_LINK_LIBRARY_SUFFIX"));
+  if(const char* linkSuffixes =
+     this->Makefile->GetDefinition("CMAKE_EXTRA_LINK_EXTENSIONS"))
+    {
+    std::vector<std::string> linkSuffixVec;
+    cmSystemTools::ExpandListArgument(linkSuffixes, linkSuffixVec);
+    for(std::vector<std::string>::iterator i = linkSuffixVec.begin();
+        i != linkSuffixVec.end(); ++i)
+      {
+      orderLibs.AddLinkExtension(i->c_str());
+      }
+    }
   orderLibs.SetLinkInformation(target.GetName(),
                                linkLibraries,
                                linkDirectories);