使用CMake和CPack的多个debian软件包的名称和描述

时间:2012-11-28 08:31:28

标签: cmake cpack

我目前正在尝试从我的项目中生成多个debian包。我唯一的问题是设置包的名称,描述,组等。

# --------------------------------------------------------------
# Required CMake version
# --------------------------------------------------------------
CMAKE_MINIMUM_REQUIRED (VERSION 2.8)

# --------------------------------------------------------------
# Project name
# --------------------------------------------------------------
PROJECT (MyProject)


# --------------------------------------------------------------
# Find all source and header files
# --------------------------------------------------------------
FILE (GLOB all_H "*.h")
FILE (GLOB all_SRC "*.cpp")

# --------------------------------------------------------------
# Set compiler flags
# --------------------------------------------------------------
SET (CMAKE_CXX_FLAGS "-Wall -Wextra -O0 -g3")

# --------------------------------------------------------------
# Add a shared library
# --------------------------------------------------------------
ADD_LIBRARY (mylib SHARED ${all_H} ${all_SRC})

# --------------------------------------------------------------
# Configure components
# --------------------------------------------------------------
SET (CPACK_DEB_COMPONENT_INSTALL 1)

# --------------------------------------------------------------
# Install
# --------------------------------------------------------------
INSTALL(TARGETS mylib DESTINATION ../lib COMPONENT main)
INSTALL(FILES ${all_H} DESTINATION ../include COMPONENT dev)

# --------------------------------------------------------------
# CPack package and package_source targets
# --------------------------------------------------------------
SET (CPACK_GENERATOR "TGZ;DEB")
SET (CPACK_SET_DESTDIR ON)

SET (CPACK_PACKAGE_NAME "mypackage")
SET (CPACK_PACKAGE_VENDOR "me")
SET (CPACK_PACKAGE_DESCRIPTION_SUMMARY "this is my package description")

SET (CPACK_DEBIAN_PACKAGE_DESCRIPTION "this is my package description
 here comes detailed description text.")

INCLUDE (CPack)

manual有一些针对CPack组件的属性和命令,但我似乎找不到正确的位置或至少更改每个包/组件的名称和描述。

我尝试使用SET (CPACK_COMPONENT_MAIN_DISPLAY_NAME "main display name")SET (CPACK_COMPONENT_main_DISPLAY_NAME "main display name")以及cpack_add_component()在INCLUDE(CPack)(这给我一个错误)之后和之后(似乎被忽略)。

有人让这个工作并且知道正确的方法吗?

2 个答案:

答案 0 :(得分:1)

从最近几天开始,我正在寻找这样的解决方案。 首先让我解释一下我的要求,然后我是如何设法解决问题的。

我想从我的单个项目中创建4个包

  1. 主程序包:其中包含所有二进制文件,静态/共享库,头文件,配置文件和脚本。
  2. 运行时软件包:其中仅包含运行我的应用程序所需的可执行文件,即二进制文件,共享库和脚本。
  3. 配置包:其中包含配置文件的基本框架和占位符。
  4. 开发包:其中包含共享/静态库和头文件。
  5. 生成Master包非常简单直接。但是,如果我使用这种方式,那么我无法使用其他包。因此,在挣扎和抓取文档和邮件存档之后,我找到了一个解决方案或解决方法。

    在我的解决方案中,我正在为我想要创建的每个包创建一个额外的自定义目标。在该目标上,我正在创建其他cmake项目,该项目包含要在该包中安装的文件列表(文件的绝对位置),通过调用cpack来构建该项目和最后创建包。

    Here是我的解决方案。

    可能有比这更好/可扩展的解决方案,如果遇到任何人请告诉我。

答案 1 :(得分:0)

我在聚会上有点晚了,但是在版本3.5之前的CMake中,CPack debian软件包不支持组件打包。

从版本3.5开始,每个组件都添加了相当多的功能,因此解决问题的最简单方法是使用CMake的版本并设置文档中描述的变量:

https://cmake.org/cmake/help/v3.5/module/CPackDeb.html或更新的 https://cmake.org/cmake/help/v3.9/module/CPackDeb.html