4

我目前正在尝试从我的项目中生成多个 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)

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

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

有没有人让它工作并知道正确的方法?

4

2 回答 2

1

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

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

  1. 主包:包含所有二进制、静态/共享库、头文件、配置文件和脚本。
  2. 运行时包:仅包含运行我的应用程序所需的可执行文件,即二进制、共享库和脚本。
  3. 配置包:其中包含配置文件的基本骨架和占位符。
  4. 开发包:其中包含共享/静态库和头文件。

生成 Master 包非常简单直接。但是如果我使用这种方式,那么我将无法使用其他软件包。因此,在挣扎和抓取文件和邮件档案之后,我找到了一种解决方案或解决方法。

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

是我的解决方案。

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

于 2016-09-09T13:13:14.317 回答
1

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

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

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

于 2017-08-01T11:45:29.747 回答