1

在我当前的设置中(使用 cmake 构建的 Mageia 5 下的 C++ 项目),下面的 cpack 命令会导致构建具有依赖关系的 RPM 包来开发包,这是不必要的。

_CPack_Packages/Linux/RPM/rpmbuild.out文件包含以下Requires部分:

Requires: devel(libQt5Core(64bit)) devel(libQt5Test(64bit)) 
devel(libQt5Xml(64bit)) devel(libgcc_s(64bit)) 
devel(liblima-common-data(64bit)) devel(liblima-common-datahandler(64bit)) 
devel(liblima-common-factory(64bit)) devel(liblima-common-fsaaccess(64bit)) 
(…)

如果找不到此列表是如何生成的。如果我从 RPM 和其他工具手动运行 find-requires 脚本,我不会得到开发包。

CPack 命令是:

set(CPACK_PACKAGE_NAME "limacommon")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LIMA Common libraries")
set(CPACK_PACKAGE_VENDOR "CEA LIST")
set(CPACK_PACKAGE_CONTACT "Gaël de Chalendar <Gael.de-Chalendar@cea.fr>")
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
SET(CPACK_PACKAGE_VERSION_MAJOR "${LIMA_VERSION_MAJOR}")
SET(CPACK_PACKAGE_VERSION_MINOR "${LIMA_VERSION_MINOR}")
SET(CPACK_PACKAGE_VERSION_PATCH "${LIMA_VERSION_RELEASE}")
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "Lima-${LIMA_VERSION_MAJOR}.${LIMA_VERSION_MINOR}")
SET(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
SET(CPACK_NSIS_MODIFY_PATH "ON")
SET(CPACK_STRIP_FILES "bin/testDict16;bin/testLexicon")
SET(CPACK_SOURCE_STRIP_FILES "")
if ("x$ENV{LIMA_DISABLE_CPACK_DEBIAN_PACKAGE_SHLIBDEPS}" STREQUAL "x")
  set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
endif()
set(CPACK_GENERATOR ${SPECIFIC_SYSTEM_PREFERED_CPACK_GENERATOR})

代码可 在此处获得。

如何避免产生这些虚假的依赖?

请注意,此问题与“如何使 cpack 不向 RPM 添加所需的库? ”不是重复的,因为这个问题是关于自愿禁用自动依赖跟踪,而我的问题是关于纠正错误行为,同时保持自动依赖跟踪。顺便说一句,我已经找到了这个问题并浏览了它包含的链接。

4

0 回答 0