7

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

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

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

4

1 回答 1

11

对于共享库,您可以使用install 命令NAMELINK_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)
于 2012-08-08T18:33:43.337 回答