有没有办法检查找到的库是否是静态库?为了找到图书馆,我这样做:
IF(WIN32)
SET(CMAKE_FIND_LIBRARY_SUFFIXES .lib)
ELSE()
SET(CMAKE_FIND_LIBRARY_SUFFIXES .a)
ENDIF()
find_library(QUANTLIB_LIBRARY NAMES QuantLib PATHS ${QUANTLIB_LIBRARY_SEARCH})
Run Code Online (Sandbox Code Playgroud)
但在 Windows 上,a.lib可能是 DLL 的符号文件。我需要确保这实际上是库的静态形式,否则稍后链接将导致难以理解的错误消息。
如果您想知道,我真的不想使用 satic 库,但是 QuantLib 在多线程和共享库方面已被破坏。这是我让它正常工作的最佳机会:静态链接到我的共享库之一。
如果库被正确添加为目标,你应该能够做这样的事情。
get_target_property(target_type your_target_name TYPE)
if (target_type STREQUAL STATIC_LIBRARY)
...
Run Code Online (Sandbox Code Playgroud)
详情请参阅TYPE。