mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-06 22:30:07 -05:00
MSVC: Teach find_library to consider Rust's '${name}.dll.lib' convention
This convention is used by Rust toolchains (rustc/cargo/cargo-c) for the MSVC ABI. Fixes: #25478
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
find-rustc-importlibs
|
||||
---------------------
|
||||
|
||||
* On Windows, when targeting the MSVC ABI, the :command:`find_library` command
|
||||
now considers ``.dll.lib`` file names before ``.lib``. This is the default
|
||||
suffix for DLL import libraries created by Rust toolchains for the MSVC ABI.
|
||||
@@ -5,8 +5,8 @@ Suffixes to append when looking for libraries.
|
||||
|
||||
This specifies what suffixes to add to library names when the
|
||||
:command:`find_library` command looks for libraries. On Windows systems this
|
||||
is typically ``.lib`` and, depending on the compiler, ``.dll.a``, ``.a``
|
||||
(e.g. GCC and Clang), so when it tries to find the ``foo`` library, it will
|
||||
look for ``[<prefix>]foo.lib`` and/or ``[<prefix>]foo[.dll].a``, depending on
|
||||
the compiler used and the ``<prefix>`` specified in the
|
||||
:variable:`CMAKE_FIND_LIBRARY_PREFIXES`.
|
||||
is typically ``.lib`` and, depending on the compiler, ``.dll.lib``, ``.dll.a``,
|
||||
``.a`` (e.g. rustc, GCC, or Clang), so when it tries to find the ``foo``
|
||||
library, it will look for ``[<prefix>]foo[.dll].lib`` and/or
|
||||
``[<prefix>]foo[.dll].a``, depending on the compiler used and the ``<prefix>``
|
||||
specified in the :variable:`CMAKE_FIND_LIBRARY_PREFIXES`.
|
||||
|
||||
@@ -14,7 +14,10 @@ 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_SUFFIXES
|
||||
".dll.lib" # import library from Rust toolchain for MSVC ABI
|
||||
".lib" # static or import library from MSVC tooling
|
||||
)
|
||||
|
||||
# for borland make long command lines are redirected to a file
|
||||
# with the following syntax, see Windows-bcc32.cmake for use
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
-- STATIC_LIBRARY='[^']*/Tests/RunCMake/find_library/Windows-MSVC/static.lib'
|
||||
-- RUSTC_IMPORT_LIBRARY='[^']*/Tests/RunCMake/find_library/Windows-MSVC/rustc_import.dll.lib'
|
||||
|
||||
@@ -2,3 +2,6 @@ enable_language(C)
|
||||
|
||||
find_library(STATIC_LIBRARY NAMES static NO_DEFAULT_PATH PATHS ${CMAKE_CURRENT_SOURCE_DIR}/Windows-MSVC)
|
||||
message(STATUS "STATIC_LIBRARY='${STATIC_LIBRARY}'")
|
||||
|
||||
find_library(RUSTC_IMPORT_LIBRARY NAMES rustc_import NO_DEFAULT_PATH PATHS ${CMAKE_CURRENT_SOURCE_DIR}/Windows-MSVC)
|
||||
message(STATUS "RUSTC_IMPORT_LIBRARY='${RUSTC_IMPORT_LIBRARY}'")
|
||||
|
||||
Reference in New Issue
Block a user