阻止CMake将`lib`添加到库名称之前

时间:2017-01-23 10:36:48

标签: cmake

可悲的是,CMake遵循了尴尬的"隐含的lib"惯例,当图书馆名称实际上不符合惯例(例如zlib),或者有“lib”时,这不可避免地会引起问题。作为他们名字的明确部分。

例如,假设我想添加libusb:

add_library(libusb ...)

在Windows上,这将正确生成libusb.lib。在Unix上,它将产生热闹的liblibusb.a。有什么方法可以防止这种行为吗?我知道我可以使用OUTPUT_NAME显式设置输出名称,但我必须使用一些时髦的生成器表达式来保存Windows上的libusb.lib。我想知道是否有更好的方法?

(并且add_library(usb ...不是解决方案;库名为 libusb 而不是 usb 。)

1 个答案:

答案 0 :(得分:5)

您可以通过CMAKE_STATIC_LIBRARY_PREFIX进行修改。因此,在您的情况下,只需执行project()命令:

set(CMAKE_STATIC_LIBRARY_PREFIX "")

或者您可以通过PREFIX目标属性为每个目标更改它。