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

如何防止CMake在安装时为共享库创建符号链接?,cmake,shared-libraries,software-packaging,Cmake,Shared Libraries,Software Packaging,当您使用so版本控制时(这意味着您将拥有类似于libfoo.so.0.8)是否有方法防止CMake为共享库(如libfoo.so)创建符号链接 我问这个问题的原因是我有一个项目,我想让该项目的多个版本可以并行安装。但是,如果像符号链接这样的文件存在于多个软件包中,大多数软件包管理器都会拒绝并行安装 作为背景信息:我们正在使用CPack构建软件包,最终我认为这是CPack的一个缺陷,您无法阻止此符号链接,或者至少能够分离开发和运行时软件包,例如debian。然而,到目前为止,我有一种错觉,就是完全

当您使用so版本控制时(这意味着您将拥有类似于
libfoo.so.0.8
)是否有方法防止CMake为共享库(如
libfoo.so
)创建符号链接

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


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

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