CMake动态加载库的输出名称?

时间:2009-10-14 07:08:02

标签: python cmake shared-libraries boost-python

我正在尝试使用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

如何更改此行为?

2 个答案:

答案 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