当您使用如此版本化时,是否有办法阻止CMake为共享库(如libfoo.so
)创建符号链接(这意味着您会使用libfoo.so.0.8
)?
我之所以问这个问题,是因为我有一个项目,我想让该项目的多个版本可以并行安装。但是,如果多个软件包中存在类似符号链接的文件,大多数软件包管理器会拒绝并行安装。
作为背景信息:我们正在使用CPack来构建软件包,最后我认为这是CPack的一个缺陷,你不能阻止这个符号链接,或者至少能够分离开发包和运行时包,例如对于debian。然而,到目前为止,我有一些幻想,只是阻止CMake创建符号链接可能比修补CPack更容易做。
答案 0 :(得分:11)
对于共享库,您可以使用install command的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)