gpt4 book ai didi

c++ - 使用 CPack 时防止为已安装的共享库创建名称链接

转载 作者:行者123 更新时间:2023-12-05 06:26:20 24 4
gpt4 key购买 nike

我正在一个发行版中构建两个包:

  1. 运行时共享库​​包
  2. 开发库包

问题是在其中任何一个中包含正确的符号链接(symbolic link)。目前我使用:

set_target_properties(mylib PROPERTIES 
SOVERSION "${PROJECT_VERSION_MAJOR}"
VERSION "${PROJECT_VERSION}")

并且在指定以下 CPack 时配置:

install (TARGETS mylib
LIBRARY
DESTINATION /usr/lib
COMPONENT runtime)

install (TARGETS mylib
LIBRARY
DESTINATION /usr/lib
COMPONENT dev)

install (DIRECTORY include/
DESTINATION /usr/include/mylib
COMPONENT dev)

运行时共享库​​包然后包含以下符号链接(symbolic link)链:

/usr/lib/libmylib.so -> libmylib.so.0
/usr/lib/libmylib.so.0 -> libmylib.so.0.0.1
/usr/lib/libmylib.so.0.0.1

问题是/usr/lib/libmylib.so -> libmylib.so.0在运行时共享库​​包中是多余的,因为只有在构建使用此 libmylib 的二进制文件时才需要它.

问题:有没有办法排除/usr/lib/libmylib.so -> libmylib.so.0来自运行时共享库​​包的符号链接(symbolic link)?

最佳答案

您应该能够使用 install(TARGETS) commandNAMELINK_SKIP 参数来执行此操作.

NAMELINK_SKIP

Similar to NAMELINK_ONLY, but it has the opposite effect: it causes the installation of library files other than the namelink when a library target is installed. When neither NAMELINK_ONLY or NAMELINK_SKIP are given, both portions are installed. On platforms where versioned shared libraries do not have symlinks or when a library is not versioned, NAMELINK_SKIP installs the library. It is an error to use this parameter outside of a LIBRARY block.

If NAMELINK_SKIP is specified, NAMELINK_COMPONENT has no effect. It is not recommended to use NAMELINK_SKIP in conjunction with NAMELINK_COMPONENT.

关于c++ - 使用 CPack 时防止为已安装的共享库创建名称链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56281702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com