我正在用CMAKE和CPACK构建一个debian包。除了我无法找到如何在deb包中添加changelog文件之外,构建的一切都很顺利。有什么办法吗?
答案 0 :(得分:0)
至少从CMake 3起,Debian CPack生成器提供了变量CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA,该变量是要添加到软件包控制部分的任意文件的列表。
您可以编写/生成您的变更日志文件,并将其添加到此变量中:
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/debian/changelog")
有关更多信息,请参见CMake docs。
=====编辑=====
Lintian(非常正确)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
添加了一个挂钩,以在其依赖项(changelog)更改时重新生成changelog.gz。 add_custom_target
添加了一个在生成时生成changelog.gz的目标。 install
将压缩的变更日志安装到正确的位置。
代码应放在与变更日志相同目录的CMakeLists.txt文件中。不幸的是,CMake似乎还没有跨平台的方式来压缩单个文件。