我正在用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似乎没有一种跨平台来压缩单个文件。