我目前正在尝试从我的项目中生成多个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)(这给我一个错误)之后和之后(似乎被忽略)。
有人让这个工作并且知道正确的方法吗?
答案 0 :(得分:1)
从最近几天开始,我正在寻找这样的解决方案。 首先让我解释一下我的要求,然后我是如何设法解决问题的。
我想从我的单个项目中创建4个包
生成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