我正在尝试使用linux上的boost.python编写cmake规则来为python构建动态加载库。我想将'foo'用于python模块名称。因此,必须将库调用foo.so
。
但默认情况下,cmake使用标准规则进行库命名,所以如果我写
add_library(foo foo.cpp)
我会在输出中得到libfoo.so
。
甚至set_target_properties(foo PROPERTIES OUTPUT_NAME "foobar")
将创建libfoobar.so
。
如何更改此行为?
答案 0 :(得分:57)
您可以使用此行取消设置前缀:
set_target_properties(foo PROPERTIES PREFIX "")
答案 1 :(得分:1)
前缀“lib”是unix / linux的惯例,并且被编译器广泛利用(例如,当你链接你写-lfoo时)。
我不知道你是否可以强制cmake创建foo.so而不是libfoo.so,但也许你可以使用“libfoo”来创建python模块。另一个选择是在cmake中创建安装目标,它将把libfoo.so重命名为foo.so