可悲的是,CMake遵循了尴尬的"隐含的lib"惯例,当图书馆名称实际上不符合惯例(例如zlib),或者有“lib”时,这不可避免地会引起问题。作为他们名字的明确部分。
例如,假设我想添加libusb:
add_library(libusb ...)
在Windows上,这将正确生成libusb.lib
。在Unix上,它将产生热闹的liblibusb.a
。有什么方法可以防止这种行为吗?我知道我可以使用OUTPUT_NAME
显式设置输出名称,但我必须使用一些时髦的生成器表达式来保存Windows上的libusb.lib
。我想知道是否有更好的方法?
(并且add_library(usb ...
不是解决方案;库名为 libusb 而不是 usb 。)
答案 0 :(得分:5)
您可以通过CMAKE_STATIC_LIBRARY_PREFIX
进行修改。因此,在您的情况下,只需执行project()
命令:
set(CMAKE_STATIC_LIBRARY_PREFIX "")
或者您可以通过PREFIX
目标属性为每个目标更改它。