在我目前的设置中(使用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})
代码可用here。
如何避免产生这些虚假依赖?
请注意,此问题不是“How do you make it so that cpack doesn't add required libraries to an RPM?”的重复,因为此问题是关于自动禁用自动依赖关系跟踪,而我的问题是在保持自动依赖关系跟踪的同时纠正错误行为。顺便说一句,我已经找到了这个问题并浏览了它包含的链接。