我需要为我的软件创建一个RPM,期望得到以下输出:< my _sw_name>-.RPM。
默认值应为0。
在我的CMakeLists.txt中,我使用以下命令:
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,还是我遗漏了什么?
发布于 2022-09-10 22:31:27
对于任何不知道的未来用户,0。这是指向CPackRPM文档的链接,以防有人需要它。
通过:/Modules/Internal/CPack/CPackRPM.cmake阅读CMake版本3.24.1,我认为罪魁祸首是函数cpack_rpm_generate_package中的第965行代码
if(NOT CPACK_RPM_PACKAGE_RELEASE)
set(CPACK_RPM_PACKAGE_RELEASE "1")
endif()0中的字符串CMake是假的。前任,
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回购的一个问题文件请求它。它可能看起来像是将其更改为:
if(NOT DEFINED CPACK_RPM_PACKAGE_RELEASE)
set(CPACK_RPM_PACKAGE_RELEASE "1")
endif()如果这是真正的原因,并且你确实将一个问题提交给kitware,请在这个答案下添加一个链接作为评论,或者添加到你问题正文的末尾,这样以后的读者就可以找到它。
https://stackoverflow.com/questions/73662589
复制相似问题