CPack RPM将库置于“提供”和“需要”列表中

时间:2019-03-11 15:31:30

标签: dependencies rpm cpack

我的产品 foo 由一个库libfoo.so和一个可执行文件foo组成,该文件依赖于libfoo.so和第三方{{ 1}}。

我使用CPack来获得 foo 的RPM,其中包含libbar.solib/libfoo.so

但是最后我无法安装该软件包:bin/foo抱怨所需的依赖项:rpm -ivh

我了解自动依赖性解析会发现libfoo.so需要foo,但是安装软件包的目的是提供该库。

如果我使用CPACK_RPM_PACKAGE_AUTOREQ禁用自动依赖项解析,则RPM也会失去libfoo.so依赖项。

我应该如何配置CPack,以保留外部依赖性,而不保留内部依赖性?

1 个答案:

答案 0 :(得分:1)

我的坏人。

错误的文件权限愚弄了自动依赖项检测:bin/foolib/libfoo.so都具有rw-rw-r--权限,而缺少x

要解决此问题,我刚刚在CMake USE_SOURCE_PERMISSIONS指令中添加了install(DIRECTORY ...)标志:

install(DIRECTORY    "${PROJECT_BINARY_DIR}/bin"
        DESTINATION  "${INSTALL_DIR}"
        USE_SOURCE_PERMISSIONS)
install(DIRECTORY    "${PROJECT_BINARY_DIR}/lib"
        DESTINATION  "${INSTALL_DIR}"
        USE_SOURCE_PERMISSIONS)