2015-02-23 118 views
3

我想为我的项目创建两个不同的包。在cmake中使用CPack生成两个不同的包:Linux

  1. DCM(包括除RCM特定模块的所有模块)
  2. RCM

1. DCM(特定模块。): SRC/CMakeList.txt

cmake_minimum_required (VERSION 2.8) 

add_subdirectory(ecs) # Include all modules 

set(CPACK_GENERATOR TGZ) 
set(CPACK_PACKAGE_NAME "dcm") 
set(CPACK_PACKAGE_VENDOR "AB") 
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Device Control") 
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt") 
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt") 
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR}) 
set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR}) 
set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH}) 
set(CPACK_PACKAGE_VERSION_BUILD ${BUILD_NUMBER}) 

set(CPACK_COMPONENTS_ALL DCM RCM) 

# Include CPack to introduce the appropriate targets 
include(CPack) 

2. RCM: src/ecs/mqa/mqa_rcm/CMakeList.txt

set(RCM_SCRIPTS 
commit.sh 
install.sh 
prepare_for_install.sh 
system_check.sh 
update_init.sh) 

INSTALL(FILES ${RCM_SCRIPTS} 
     PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE WORLD_EXECUTE 
     DESTINATION ${RCM_INSTALL_PREFIX}/install 
     COMPONENT RCM) 
# Create version file 
install(FILES "${CMAKE_BINARY_DIR}/version" 
     DESTINATION ${RCM_INSTALL_PREFIX} 
     COMPONENT RCM) 

尝试: 在Linux虚拟机的提示。

$make -j4 
$make install 
$make package 

它只创建单个包装DCM-1.90.0-Linux.tar.gz

参考: CMake WikiCPackStackOverflow

问题: 我想创建1. DCM-1.90.0-Linux.tar.gz和2 RCM-1.90.0-Linux.tar.gz包。

我使用Google搜索,但无法找到确切的解决方案。

如果您需要更多信息,请告知我。

很多预先感谢。

+0

是否有我缺少的东西..? – 2015-02-24 12:18:46

回答

2

我只需要设置CPACK标志。

set(CPACK_ARCHIVE_COMPONENT_INSTALL ON) 

之前

include(CPack) 

和运行命令。

make 
make install 
make package 

和它创建两个不同的包。

+0

但是,它仍然没有按预期创建软件包名称。包名是类似的,在CPACK变量'set(CPACK_PACKAGE_FILE_NAME DCM-1.90.0)'中设置的名称,则包创建时的名称为1.'DCM-1.90.0-Linux.tar.gz'和2.'DCM-1.90 .0- .tar.gz' – 2015-02-26 05:45:38

0

我不使用CPack,所以也许有比以下更好的解决方案。

对于我的不同安装,我在CACHE中定义了一些变量(例如:set(INCLUDE_MODULE_XYZ OFF CACHE BOOL "Include the module xyz")),用于定义我在安装中放置的内容。你可以改变运行ccmake的这个变量的值。在你的情况下,你可以生成你的第一个包,用ccmake改变de配置,然后生成第二个包(如果需要的话)。

+0

我想使用相同的配置文件生成这两个软件包。因为我不能更改个别软件包的配置文件。 – 2015-02-23 13:02:15