CMake的dynamic加载库的输出名称?

我正在尝试编写cmake规则来在linux上使用boost.python为python构builddynamic加载的库。 我想用'foo'作为python模块的名字。 所以,图书馆必须被称为foo.so 但默认情况下,cmake使用库命名的标准规则,所以如果我写

 add_library(foo foo.cpp) 

我会得到libfoo.so输出。 甚至set_target_properties(foo PROPERTIES OUTPUT_NAME "foobar")将创buildlibfoobar.so

如何改变这种行为?

你可以用下面这行代替前缀:

 set_target_properties(foo PROPERTIES PREFIX "") 

前缀“lib”是unix / linux的惯例,被编译器广泛利用(例如,当你链接你写-lfoo时)。

我不知道你是否可以强制cmake创buildfoo.so而不是libfoo.so,但是也许你可以使用“libfoo”作为python模块。 另一个select是在cmake中创build安装目标,将libfoo.so重新命名为foo.so