我如何用CMAKE在deb中添加更新日志?

k7fdbhmy  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(131)

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

jjjwad0x

jjjwad0x1#

至少从CMake 3开始,Debian CPack生成器提供了变量CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA,这是一个任意文件的列表,可以添加到包的控制部分。
您可以编写/生成更改日志文件,并将其添加到此变量:

set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/debian/changelog")

字符串
如需详细信息,请参阅CMake docs
=编辑=
林天(很理所当然地)doesn't like上面的方案。变更日志应压缩并安装在/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_BINARY_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_command添加了一个挂钩,以便在changelog.gz的依赖关系(changelog)发生更改时重新生成changelog.gz。add_custom_target添加一个目标以在生成时生成changelog.gz。install会将压缩的变更记录档安装到正确的位置。
该代码应位于与更改日志相同的目录中的CMakeLists.txt文件中。不幸的是,CMake似乎还没有一种跨平台的方式来压缩单个文件。

相关问题