2012-11-28 85 views
4

我目前正試圖從我的項目中生成多個debian軟件包。我唯一的問題是設置包的名稱,描述,組等等。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)(它給了我一個錯誤)和after(似乎被忽略)之前。

有沒有人得到這個工作,並知道正確的方式來做到這一點?

+0

嗨,請您分享一下您在這個話題上的經驗嗎?你成功地構建了多個deb包嗎? –

回答

1

從前幾天我正在尋找這樣的解決方案。 讓我先解釋一下我的需求,然後我如何設法解決問題。

我想從我的單個項目

  1. 主包創建4個包:裏面包含了所有的二進制,靜態/共享庫,頭文件,配置文件和腳本。
  2. 運行時包:其中只包含運行我的應用程序所需的可執行文件,即二進制文件,共享庫和腳本。
  3. 配置包:其中包含配置文件的基本骨架和佔位符。
  4. 開發包:其中包含共享/靜態庫和頭文件。

生成主包是一件容易的事,也很簡單。但是,如果我使用這種方式,那麼我無法使用其他軟件包。所以在掙扎和刮擦文檔和郵件歸檔之後,我找到了一個解決方案或解決方法。

在我的解決方案中,我爲每個要創建的包創建一個額外的自定義目標。在該目標上,我創建了其他cmake項目,該項目包含要安裝在該包中的文件列表(文件的絕對位置),構建該項目並最後通過調用cpack創建包。

Here是我的解決方案。

有可能比這更好/可擴展的解決方案,如果有任何人遇到,請讓我知道。

+0

更好的組件包裝功能在CMake 3.5中逐漸添加,因此碰撞了您的CPack版本並設置了以下描述的變量:https://cmake.org/cmake/help/v3.9/module/CPackDeb.html應該你想要什麼。 –