我的产品 foo 由一个库libfoo.so
和一个可执行文件foo
组成,该文件依赖于libfoo.so
和第三方{{ 1}}。
我使用CPack来获得 foo 的RPM,其中包含libbar.so
和lib/libfoo.so
。
但是最后我无法安装该软件包:bin/foo
抱怨所需的依赖项:rpm -ivh
。
我了解自动依赖性解析会发现libfoo.so
需要foo
,但是安装软件包的目的是提供该库。
如果我使用CPACK_RPM_PACKAGE_AUTOREQ
禁用自动依赖项解析,则RPM也会失去libfoo.so
依赖项。
我应该如何配置CPack,以保留外部依赖性,而不保留内部依赖性?
答案 0 :(得分:1)
我的坏人。
错误的文件权限愚弄了自动依赖项检测:bin/foo
和lib/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)