2016-05-21 3 views
0

В GNU/Linux соглашение должно передать имя библиотеки (назовем ее foo) в target_link_libraries без префикса lib (в противном случае она пытается связать liblibfoo .так). В Windows, однако, когда я прошу связаться с «foo», он пытается найти «foo.lib», которого не существует, поскольку библиотека называется libfoo.lib. Есть ли способ дать команду cmake добавить префикс lib, не прибегая к еще одному блоку if (WIN32)?cmake: как связать библиотеку с префиксом lib на окнах

ответ

1

Используйте команду find_library для поиска абсолютного пути к библиотеке. Вы можете указать все возможные имена искали библиотеки с NAMES опции:

find_library(FOO_LIBRARY NAMES foo libfoo) 

Затем используйте результат этой команды для связи с библиотекой:

target_link_libraries(my_exec ${FOO_LIBRARY}) 
+0

Нет, я говорю о библиотеках без Cmake модулей. –

+0

Не задействованы модули CMake. Команда 'find_library' является внутренней для CMake, например' target_link_libraries'. – Tsyvarev

+0

Спасибо, я неправильно понял. Я почему-то думал, что вы нашли find_package. Я не знал о find_library, который действительно находит библиотеку. Однако мне не нравится, что он связывает его с полным абсолютным путем, поэтому я думаю, что я буду придерживаться условного на данный момент. –

Смежные вопросы