【问题标题】:How to prevent CMake from creating a symlink for shared libraries on install?如何防止 CMake 在安装时为共享库创建符号链接?
【发布时间】:2012-08-05 16:27:33
【问题描述】:

当您使用 so-versioning 时,有没有办法阻止 CMake 为 libfoo.so 等共享库创建符号链接(这意味着您将拥有类似 libfoo.so.0.8 的东西)?

我问这个问题的原因是我有一个项目,我想使该项目的多个版本可以并行安装。但是,如果多个包中存在像符号链接这样的文件,大多数包管理器会拒绝并行安装。

作为背景信息:我们正在使用 CPack 构建包,最终我认为这是 CPack 的一个缺陷,您无法阻止此符号链接或至少能够分离开发包和运行时包,例如对于Debian。然而,到目前为止,我有这样的幻想,即完全阻止 CMake 创建符号链接可能比修补 CPack 更容易。

【问题讨论】:

    标签: cmake shared-libraries software-packaging


    【解决方案1】:

    对于共享库,您可以使用install commandNAMELINK_SKIP 选项来防止生成指向版本化库文件的无版本库名称符号链接。 生成的 CPack 安装程序将在安装时遵循该设置。必须通过设置共享库目标的SOVERSION 属性来指定库版本:

    以下示例代码概述了所需的步骤:

    add_library(foo SHARED foo.c)
    
    set_target_properties(foo PROPERTIES SOVERSION "0.8")
    
    install(TARGETS foo LIBRARY DESTINATION lib NAMELINK_SKIP)
    
    include(CPack)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多