首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不能将CPack CPACK_RPM_PACKAGE_RELEASE设置为0

不能将CPack CPACK_RPM_PACKAGE_RELEASE设置为0
EN

Stack Overflow用户
提问于 2022-09-09 13:01:54
回答 1查看 51关注 0票数 1

我需要为我的软件创建一个RPM,期望得到以下输出:< my _sw_name>-.RPM。

默认值应为0。

在我的CMakeLists.txt中,我使用以下命令:

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.20)
...
set(SW_RELEASE 0)
set(CPACK_GENERATOR "RPM")
set(CPACK_RPM_PACKAGE_RELEASE ${SW_RELEASE})
set(CPACK_RPM_PACKAGE_RELEASE_DIST OFF)
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
...

然而,生成的RPM文件名是--1.rpm,,并且RPM文件中的Release:字段被设置为1

这是CPack中的一个bug,还是我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-10 22:31:27

对于任何不知道的未来用户,0。这是指向CPackRPM文档的链接,以防有人需要它。

通过:/Modules/Internal/CPack/CPackRPM.cmake阅读CMake版本3.24.1,我认为罪魁祸首是函数cpack_rpm_generate_package中的第965行代码

代码语言:javascript
运行
复制
  if(NOT CPACK_RPM_PACKAGE_RELEASE)
    set(CPACK_RPM_PACKAGE_RELEASE "1")
  endif()

0中的字符串CMake是假的。前任,

代码语言:javascript
运行
复制
if(NOT 0)
  message("zero is falsy") # this will be reached and printed
endif()

即。您的0会使表达式NOT CPACK_RPM_PACKAGE_RELEASE计算为FALSE,然后0会被重击到1

如果您希望支持值0,可以将关于CMake gitlab回购的一个问题文件请求它。它可能看起来像是将其更改为:

代码语言:javascript
运行
复制
  if(NOT DEFINED CPACK_RPM_PACKAGE_RELEASE)
    set(CPACK_RPM_PACKAGE_RELEASE "1")
  endif()

如果这是真正的原因,并且你确实将一个问题提交给kitware,请在这个答案下添加一个链接作为评论,或者添加到你问题正文的末尾,这样以后的读者就可以找到它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73662589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档