我正在用CMAKE和CPACK构建一个debian软件包。一切都很顺利,除了我找不到如何在deb包中添加changelog文件。有什么办法吗?
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上有效:
/usr/share/doc/package-name/changelog.gz
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似乎还没有一种跨平台的方式来压缩单个文件。
add_custom_command
add_custom_target
install
1条答案
按热度按时间jjjwad0x1#
至少从CMake 3开始,Debian CPack生成器提供了变量CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA,这是一个任意文件的列表,可以添加到包的控制部分。
您可以编写/生成更改日志文件,并将其添加到此变量:
字符串
如需详细信息,请参阅CMake docs。
=编辑=
林天(很理所当然地)doesn't like上面的方案。变更日志应压缩并安装在
/usr/share/doc/package-name/changelog.gz
中。以下代码在Linux上有效:型
add_custom_command
添加了一个挂钩,以便在changelog.gz的依赖关系(changelog)发生更改时重新生成changelog.gz。add_custom_target
添加一个目标以在生成时生成changelog.gz。install
会将压缩的变更记录档安装到正确的位置。该代码应位于与更改日志相同的目录中的CMakeLists.txt文件中。不幸的是,CMake似乎还没有一种跨平台的方式来压缩单个文件。