cmake проверяет статичность библиотеки - PullRequest
1 голос
/ 23 марта 2011

Есть ли способ проверить, является ли найденная библиотека статической библиотекой?Чтобы найти библиотеку, я делаю это:

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})

Но в Windows .lib может быть символьным файлом для DLL.Я должен убедиться, что это на самом деле статическая форма библиотеки, в противном случае последующие ссылки приведут к трудным для понимания сообщениям об ошибках.


Если вам интересно, я неЯ действительно не хочу использовать атласную библиотеку, но QuantLib не работает в отношении многопоточности и разделяемых библиотек.Это мой лучший шанс заставить его работать правильно: статическая ссылка на одну из моих общих библиотек.

1 Ответ

0 голосов
/ 23 марта 2011

Для этого не существует cmake-метода.Большинство сценариев find_package получают его из имени файла: многие библиотеки различают там статические библиотеки с пре- или пост-исправлением:

В качестве обходного пути, вы можете попробовать запустить инструментальную корзину и проверить, экспортированы ли функции...

dumpbin /exports QuantLib.lib

Если это дает вам длинный список экспорта, это, скорее всего, dll, в противном случае статическая библиотека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...