我正在用 CMAKE 和 CPACK 构建一个 debian 包。除了我找不到如何在 deb 包中添加更改日志文件之外,构建一切都很顺利。有什么办法吗?
最佳答案
至少从 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_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_command
添加一个钩子(Hook)以在其依赖项 (changelog) 更改时重新生成 changelog.gz。 add_custom_target
添加一个目标以在构建时生成 changelog.gz。 install
将压缩的变更日志安装到正确的位置。代码应该放在与更改日志相同的目录中的 CMakeLists.txt 文件中。不幸的是,CMake 似乎还没有跨平台的方式来压缩单个文件。
关于cmake - 如何使用 CMAKE 在 deb 中添加变更日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46490448/