2017-01-23 4 views
1

К сожалению, CMake следует неловкому соглашению« неявное lib », которое неизбежно вызывает проблемы, когда имена библиотек фактически не следуют за соглашением (например, zlib) или имеют« lib »как явная часть их имени.Остановить CMake от добавления `lib` к именам библиотек

Например, предположим, что я хочу добавить libusb:

add_library(libusb ...) 

В Windows это будет правильно производить libusb.lib. В Unix это создаст веселый liblibusb.a. Есть ли способ предотвратить такое поведение? Я знаю, что я могу установить имя вывода явно с помощью OUTPUT_NAME, но мне пришлось бы использовать некоторые фанковые генераторные выражения для сохранения libusb.lib в Windows. Интересно, есть ли лучший способ?

(И не add_library(usb ... не является решением, библиотека называется libusb не USB.)

+0

Вы также можете переименовать свою библиотеку в «usb» и заставить Windows добавить «lib» к ней .... –

ответ

3

Вы можете изменить его с помощью CMAKE_STATIC_LIBRARY_PREFIX. Так что в вашем случае просто делать после команды project():

set(CMAKE_STATIC_LIBRARY_PREFIX "") 

Или вы можете изменить его на цель с помощью PREFIX целевого свойства.

+0

Ах, фантастика, спасибо! – Timmmm

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

  • Нет связанных вопросов^_^