summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2024-01-19 21:57:46 (GMT)
committerBrad King <brad.king@kitware.com>2024-01-19 22:12:36 (GMT)
commitc6efbd78d86798573654d1a791f76de0e71bd93f (patch)
treef1d1c78098a40e4f619e49cd8da0b465fdec4bd8 /Modules
parent62ca95518e37e9bc9fd4ae4b898f78c4d4c4893b (diff)
downloadCMake-c6efbd78d86798573654d1a791f76de0e71bd93f.zip
CMake-c6efbd78d86798573654d1a791f76de0e71bd93f.tar.gz
CMake-c6efbd78d86798573654d1a791f76de0e71bd93f.tar.bz2
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 Note that this was previously attempted by * commit be848a71b0 (MSVC: Teach find_library to consider the 'libfoo.a' naming convention, 2022-09-19, v3.25.0-rc1~111^2) but was reverted by * commit 955d6245c1 (MSVC: Revert "Teach find_library to consider the 'libfoo.a' naming convention", 2022-11-28, v3.25.1~6^2) due to problems finding GNU ABI libraries in PATH-derived prefixes. Since then, * commit 0a81110b84 (find_(library|file|path): Drop PATH-derived search prefixes, 2023-09-14, v3.28.0-rc1~91^2) removed the problematic search paths, so we can restore this change. Fixes: #23975
Diffstat (limited to 'Modules')
-rw-r--r--Modules/Platform/Windows.cmake6
1 files changed, 5 insertions, 1 deletions
diff --git a/Modules/Platform/Windows.cmake b/Modules/Platform/Windows.cmake
index bc93caa..af7335b 100644
--- a/Modules/Platform/Windows.cmake
+++ b/Modules/Platform/Windows.cmake
@@ -13,10 +13,14 @@ 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_PREFIXES
+ "" # static or import library from MSVC tooling
+ "lib" # static library from Meson with MSVC tooling
+ )
set(CMAKE_FIND_LIBRARY_SUFFIXES
".dll.lib" # import library from Rust toolchain for MSVC ABI
".lib" # static or import library from MSVC tooling
+ ".a" # static library from Meson with MSVC tooling
)
# for borland make long command lines are redirected to a file