我如何与Cmake一起在DEB中添加一个更改



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

由于至少CMake 3,Debian CPack Generator提供了变量CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA,这是一个任意文件列表来添加到软件包的控制部分。

>

您可以编写/生成ChangElog文件,然后将其添加到此变量:

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

请参阅cmake文档以获取更多信息。

===============

lintian(完全正确)不喜欢上述解决方案。应压缩变频器并安装在/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)更改时,添加了一个钩子以重新生成changelog.gz。add_custom_target添加了一个目标,可以在构建时间生成ChangElog.gz。install将压缩的变形值安装到正确的位置。

该代码应在与ChangElog同一目录中的cmakelists.txt文件中进行。不幸的是,Cmake似乎没有一种跨平台来压缩单个文件。

相关内容

最新更新