【问题标题】:CMake output name for dynamic-loaded library?动态加载库的 CMake 输出名称?
【发布时间】:2010-12-06 14:05:57
【问题描述】:

我正在尝试编写 cmake 规则以在 linux 上使用 boost.python 为 python 构建动态加载库。我想使用 'foo' 作为 python 模块名称。因此,该库必须称为foo.so。 但是默认情况下,cmake 使用标准的库命名规则,所以如果我写

add_library(foo foo.cpp)

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

如何改变这种行为?

【问题讨论】:

    标签: python cmake shared-libraries boost-python


    【解决方案1】:

    您可以使用此行取消设置前缀:

    set_target_properties(foo PROPERTIES PREFIX "")
    

    【讨论】:

      【解决方案2】:

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

      我不知道你是否可以强制 cmake 创建 foo.so 而不是 libfoo.so,但也许你可以将“libfoo”用于 python 模块。另一种选择是在 cmake 中创建安装目标,这会将 libfoo.so 重命名为 foo.so

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-02
        • 2018-01-15
        相关资源
        最近更新 更多