Cmake / Cpack Debian包装 - 生成正确的包装名称

时间:2018-05-05 03:35:03

标签: debian cpack

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

EXISTS

但我得到的文件名为:

WHERE

而不是:

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}")

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

2 个答案:

答案 0 :(得分:2)

Cpack没有CPACK_DEBIAN_PACKAGE_FILE_NAME,可能这应该报告为bug所有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构建的。

答案 1 :(得分:0)

更新cmake> = 3.6 :使用

set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)

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

  

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