如何使用CMAKE在deb中添加变更日志?

如何使用CMAKE在deb中添加变更日志?,cmake,deb,cpack,Cmake,Deb,Cpack,我正在用CMAKE和CPACK构建一个debian包。除了我找不到如何在deb包中添加changelog文件外,构建过程中一切都很顺利。有什么办法吗 由于至少CMake 3,Debian CPack generator提供变量CPack_Debian_PACKAGE_CONTROL_EXTRA,它是要添加到包的CONTROL部分的任意文件的列表 您可以写入/生成更改日志文件,并将其添加到此变量: set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMA

我正在用CMAKE和CPACK构建一个debian包。除了我找不到如何在deb包中添加changelog文件外,构建过程中一切都很顺利。有什么办法吗

由于至少CMake 3,Debian CPack generator提供变量CPack_Debian_PACKAGE_CONTROL_EXTRA,它是要添加到包的CONTROL部分的任意文件的列表

您可以写入/生成更改日志文件,并将其添加到此变量:

set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/debian/changelog")
有关更多信息,请参阅CMake

======编辑=====

林寻(相当正确)给出了上述解决方案。应将变更日志压缩并安装在
/usr/share/doc/package name/changelog.gz
中。以下代码在Linux上工作:

include(GNUInstallDirs)

add_custom_command(
    OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/changelog.gz
    COMMAND gzip -cn9 "${CMAKE_CURRENT_SOURCE_DIR}/changelog" "${CMAKE_CURRENT_SOURCE_DIR}/changelog.gz"
    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
    DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/changelog"
    COMMENT "Compressing changelog"
)

add_custom_target(changelog ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/changelog.gz")

install(FILES "${CMAKE_CURRENT_BINARY_DIR}/changelog.gz"
    DESTINATION "${CMAKE_INSTALL_DOCDIR}"
)
add_custom_命令
添加一个钩子,以便在其依赖项(changelog)更改时重新生成changelog.gz
add_custom_target
在构建时添加一个目标以生成changelog.gz<代码>安装将压缩的变更日志安装到正确的位置


代码应该放在与changelog相同的目录中的CMakeLists.txt文件中。不幸的是,CMake似乎还没有跨平台的方式来压缩单个文件。

您的变更日志的格式是什么?它是如何生成的?直到现在,我一直在使用dh生成变更日志文件,在每次发布之前,我都是手动添加变更,然后使用dpkg BuildPackage构建包。我不理解添加简单文本文件的区别。变更日志将由Debian archive使用。检查此处的更多信息:因此我需要一个在CPACK中的某个位置明确添加此信息,但我找不到位置。您尝试过此处显示的方法吗:这里是所有其他文件?它对我有效。怎么了?你收到错误消息了吗?
lintian
不接受这个解决方案,而且根据Debian指南,changelog应该使用
gzip-9压缩,只是说应该安装压缩,所以我在这里质疑你的结论。林寻
不接受方案,有什么不对?这个解决方案足够透明,应该清楚它失败的原因。@pktiuk我已经更新了我的答案。希望这能有所帮助-我现在没有从林寻那里得到任何警告或错误。