【发布时间】:2018-06-22 16:39:51
【问题描述】:
我正在使用 CPack 的组件功能制作两个 rpm。我希望一个拥有 .so 文件,另一个拥有所有头文件。我在组件功能中找不到任何关于打包文件的类似问题。
(DEVEL" 是我的 devel rpm 的组件)
现在我有set(CPACK_RPM_DEVEL_INSTALL_FILES path/../file1
...
path/../file2)
只是我的所有文件都由返回分隔,但这根本不起作用。在 rpm 中提供我需要的文件列表的正确语句是什么?
目前它产生 3 个 rpm(我假设第三个将是一个完整的,其中包含我可以生成但不使用的所有文件)。其中两个 rpm 包含 repo 中的每个文件,第三个只有两个 CMake 文件。
cpack_add_component(DEVEL)//Skipping version, description, name, setting source_dir...
set(CPACK_RPM_COMPONENT_INSTALL ON)set(CPACK_COMPONENTS_IGNORE_GROUPS 1)set(CPACK_COMPONENTS_GROUPING ONE_PER_GROUP)set(CPACK_COMPONENT_DEVEL_DISPLAY_NAME "devel")set(CPACK_RPM_DEVEL_INSTALL_FILES "/usr/include/opentracing/noop.h
.../usr/include/opentracing/version.h")set(CPACK_COMPONENT_DIST_REQUIRED TRUE)set(CPACK_COMPONENT_DEVEL_REQUIRED TRUE)set(CPACK_COMPONENTS_ALL DIST DEVEL)
我在 linux 命令行中使用 cpack -G rpm 调用它
【问题讨论】:
-
嗯,将
CPACK_RPM_COMPONENT_INSTALL变量设置为ON怎么样,CPack 将为每个组件创建 RPM 包? -
我已经打开了它,它会创建 3 个 rpm。其中 2 个 rpm 中包含每个文件,而第三个(开发)rpm 中只有两个 cmake 文件,这些文件并不打算包含在其中。
-
嗯,这样的 rpm 可能是个问题。您能否提供您的
CMakeLists.txt(以minimal reproducible example 的形式)重现此类行为? -
cpack_add_component(DEVEL) //assigned directories, version... set(CPACK_RPM_COMPONENT_INSTALL ON) set(CPACK_COMPONENTS_IGNORE_GROUPS 1) set(CPACK_COMPONENTS_GROUPING ONE_PER_GROUP) set(CPACK_COMPONENT_DEVEL_DISPLAY_NAME "devel") set(CPACK_RPM_DEVEL_PACKAGE_NAME "opentracing-cpp-devel${OPENTRACING_VERSION_STRING}") set(CPACK_RPM_DEVEL_INSTALL_FILES "/usr/include/opentracing/noop.h ... /usr/include/opentracing/variant/recursive_wrapper.hpp") set(CPACK_COMPONENT_DIST_REQUIRED TRUE) set(CPACK_COMPONENT_DEVEL_REQUIRED TRUE) set(CPACK_COMPONENTS_ALL DIST DEVEL) -
抱歉,我无法弄清楚格式。我无法弄清楚并且找不到任何文档的主要事情是 CPACK_RPM_DEVEL_INSTALL_FILES 调用或一些类似于可以修改添加到 rpm 的文件的函数