如何防止CMake在安装时为共享库创建符号链接?

时间:2012-08-08 14:22:17

标签: cmake shared-libraries software-packaging

当您使用如此版本化时,是否有办法阻止CMake为共享库(如libfoo.so)创建符号链接(这意味着您会使用libfoo.so.0.8)?

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

作为背景信息:我们正在使用CPack来构建软件包,最后我认为这是CPack的一个缺陷,你不能阻止这个符号链接,或者至少能够分离开发包和运行时包,例如对于debian。然而,到目前为止,我有一些幻想,只是阻止CMake创建符号链接可能比修补CPack更容易做。

1 个答案:

答案 0 :(得分:11)

对于共享库,您可以使用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)