Преглед изворни кода

MSVC: Teach find_library to consider the 'libfoo.a' naming convention

When targeting the GNU ABI, we consider `.a` libraries first but also
accept `.lib`.  For symmetry, when targeting the MSVC ABI, we now
consider `.lib` first but also accept `.a`.

This adds support for meson-generated static libraries, which are named
with the pattern `lib${foo}.a`:

* https://mesonbuild.com/FAQ.html#why-does-building-my-project-with-msvc-output-static-libraries-called-libfooa

Fixes: #23975
Signed-off-by: Yonggang Luo <[email protected]>
Yonggang Luo пре 3 година
родитељ
комит
be848a71b0
2 измењених фајлова са 9 додато и 2 уклоњено
  1. 7 0
      Help/release/dev/detect-lib_foo.a-msvc.rst
  2. 2 2
      Modules/Platform/Windows.cmake

+ 7 - 0
Help/release/dev/detect-lib_foo.a-msvc.rst

@@ -0,0 +1,7 @@
+detect-lib_foo.a-msvc
+---------------------
+
+* On Windows, when targeting the MSVC ABI, the :command:`find_library` command
+  now accepts ``.a`` file names after first considering ``.lib``.  This is
+  symmetric with existing behavior when targeting the GNU ABI, in which the
+  command accepts ``.lib`` file names after first considering ``.a``.

+ 2 - 2
Modules/Platform/Windows.cmake

@@ -19,8 +19,8 @@ set(CMAKE_LINK_LIBRARY_SUFFIX ".lib")
 set(CMAKE_DL_LIBS "")
 set(CMAKE_EXTRA_LINK_EXTENSIONS ".targets")
 
-set(CMAKE_FIND_LIBRARY_PREFIXES "")
-set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib")
+set(CMAKE_FIND_LIBRARY_PREFIXES "" "lib")
+set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".a")
 
 # for borland make long command lines are redirected to a file
 # with the following syntax, see Windows-bcc32.cmake for use