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