cmake - 如何使用 CMAKE 在 deb 中添加变更日志?

标签 cmake deb cpack

我正在用 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/

相关文章:

cmake - 如何使用CPack将文件添加到Debian软件包中?

windows - 使用 CMake + CPack + Wix 生成安装程序

c++ - 在 Mysql ODBC 中禁用 GUI

python - "python setup.py install"命令未在 install_requires 列表中安装库

cmake 一个模块包含另一个模块

python - 如何使用 CPack 构建 debian 包来执行 setup.py?

linux - 使用 "dpkg-buildpackage -b"为本地构建禁用 CDBS 许可证检查步骤

cmake - "make dist"在 CMake 中等效

c++ - 意外的 undefined reference

c++ - CMAKE MAC OSX 库链接问题 : compiles on Linux but on on Mac