【问题标题】:Cmake/Cpack Debian packaging - producing correct package nameCmake/Cpack Debian 打包 - 生成正确的包名
【发布时间】:2018-05-05 03:35:02
【问题描述】:

我正在尝试使用 Cpack 构建一个正确命名的 Debian 软件包。我的 CMakeLists.txt 中有以下内容:

set(CPACK_PACKAGE_NAME "something")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
set(CPACK_PACKAGE_ARCHITECTURE "amd64")
set(CPACK_PACKAGE_VERSION_MAJOR "0")
set(CPACK_PACKAGE_VERSION_MINOR "9")
set(CPACK_PACKAGE_VERSION_PATCH "0")
set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")

但我得到的文件名为:

 something-0.9.0-Linux.deb

代替:

something-0.9.0_amd64.deb

我查看了各种文档页面,但没有找到答案。

【问题讨论】:

    标签: debian cpack


    【解决方案1】:

    Cpack 没有CPACK_DEBIAN_PACKAGE_FILE_NAME,可能这应该被报告为错误,并非所有 GNU/Linux-BSD 系统都有相同的包命名约定。

    目前,您可以设置CPACK_PACKAGE_FILE_NAME,默认设置为:

    ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}.
    

    点击链接阅读完整的文档页面。

    CPACK_DEBIAN_PACKAGE_ARCHITECTURE

    Debian 软件包架构

    Mandatory : YES
    Default : Output of `dpkg --print-architecture` (or 'i386' if dpkg is not found)
    

    您可以将文件名设置为:

    set(CPACK_PACKAGE_FILE_NAME "${CPACK_DEBIAN_PACKAGE_NAME}-${CPACK_DEBIAN_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.")

    顺便说一句,如果它们很好,则无需覆盖默认值。

    • CPACK_DEBIAN_PACKAGE_ARCHITECTURE 默认为 dpkg --print-architecture
    • CPACK_DEBIAN_PACKAGE_VERSION 默认为 CPACK_PACKAGE_VERSION,它本身是从 major.minor.patch 构建的。

    【讨论】:

    • 我正在寻找 Cpack 以确定它是一个 amd64 包并正确命名。
    【解决方案2】:

    cmake >=3.6 更新:使用

    set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
    

    请注意,此处需要明确设置默认值。 引用docs

    此变量的首选设置是 DEB-DEFAULT,但为了向后兼容 CMake 3.6 之前的 CPackDeb,此功能默认禁用。

    【讨论】:

      猜你喜欢
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 2018-02-11
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 2018-10-25
      相关资源
      最近更新 更多