rpm / deb 的 cpap 中是否有与 %global __requires_exclude_from 类似的功能?

Is there a similiar function to %global __requires_exclude_from in cpack for rpm / deb?

我们从常规规范文件(用于 rpm)过渡到 cpack,并将 .deb 包添加到我们的构建中。

除了 __requires_exclude_from 之外,我能够复制 rpm 规范文件中的所有内容。 我们有一个需要可选库的文件。 (包含的二进制文件是可选的,仅在用户需要时调用)但是生成的 rpm / deb 包仍然需要依赖项。

在 RPM 规范中,我们从依赖扫描中完全排除了这个特定的二进制文件,效果很好,但我无法在 RPM 和 DEB 生成器的 cpack 中重现它。

我能想到的唯一方法是创建/使用我自己的规范文件作为模板,但我不确定我是否想这样做,因为这似乎违背了 cpack 的全部目的...

有谁知道是否可以从依赖扫描中排除单个文件?

查看 CPackRPM.cmake 文件,似乎此功能在 CPack 中尚不可用。

我做了一个简短的 diff(未经测试),应该可以帮助您解决眼前的问题。

--- C:\Program Files\CMake\share\cmake-3.15\Modules\Internal\CPack\CPackRPM - Kopie.cmake   2019-09-04 09:59:20.000000000 +0200
+++ C:\Program Files\CMake\share\cmake-3.15\Modules\Internal\CPack\CPackRPM.cmake   2020-07-17 11:57:19.000000000 +0200
@@ -1094,12 +1094,22 @@
     if(CPACK_RPM_PACKAGE_DEBUG)
       message("CPackRPM:Debug: User defined CPACK_RPM_SPEC_INSTALL_POST = ${CPACK_RPM_SPEC_INSTALL_POST}")
     endif()
     set(TMP_RPM_SPEC_INSTALL_POST "%define __spec_install_post ${CPACK_RPM_SPEC_INSTALL_POST}")
   endif()
 
+  # CPACK_RPM_REQUIRES_EXCLUDE_FROM
+  # May be defined to keep the dependency generator from
+  # scanning specific files or directories for deps.
+  if(CPACK_RPM_REQUIRES_EXCLUDE_FROM)
+    if(CPACK_RPM_PACKAGE_DEBUG)
+      message("CPackRPM:Debug: User defined CPACK_RPM_REQUIRES_EXCLUDE_FROM = ${CPACK_RPM_REQUIRES_EXCLUDE_FROM}")
+    endif()
+    set(TMP_RPM_REQUIRES_EXCLUDE_FROM "%global __requires_exclude_from ${CPACK_RPM_REQUIRES_EXCLUDE_FROM}")
+  endif()
+
   # CPACK_RPM_POST_INSTALL_SCRIPT_FILE (or CPACK_RPM_<COMPONENT>_POST_INSTALL_SCRIPT_FILE)
   # CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE (or CPACK_RPM_<COMPONENT>_POST_UNINSTALL_SCRIPT_FILE)
   # May be used to embed a post (un)installation script in the spec file.
   # The referred script file(s) will be read and directly
   # put after the %post or %postun section
   # ----------------------------------------------------------------
@@ -1574,12 +1584,13 @@
 
 %define _rpmdir %_topdir/RPMS
 %define _srcrpmdir %_topdir/SRPMS
 \@FILE_NAME_DEFINE\@
 %define _unpackaged_files_terminate_build 0
 \@TMP_RPM_SPEC_INSTALL_POST\@
+\@TMP_RPM_REQUIRES_EXCLUDE_FROM\@
 \@CPACK_RPM_SPEC_MORE_DEFINE\@
 \@CPACK_RPM_COMPRESSION_TYPE_TMP\@
 
 %description
 \@CPACK_RPM_PACKAGE_DESCRIPTION\@
 
@@ -1696,12 +1707,13 @@
 
 %define _rpmdir %_topdir/RPMS
 %define _srcrpmdir %_topdir/SRPMS
 \@FILE_NAME_DEFINE\@
 %define _unpackaged_files_terminate_build 0
 \@TMP_RPM_SPEC_INSTALL_POST\@
+\@TMP_RPM_REQUIRES_EXCLUDE_FROM\@
 \@CPACK_RPM_SPEC_MORE_DEFINE\@
 \@CPACK_RPM_COMPRESSION_TYPE_TMP\@
 
 %description
 \@CPACK_RPM_PACKAGE_DESCRIPTION\@
 

希望对您有所帮助并满足您的需求。