在cmake:Linux中使用CPack生成两个不同的包

我想为我的项目创build两个不同的

  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 

它只创build一个包DCM-1.90.0-Linux.tar.gz

参考: CMake Wiki和CPack和StackOverflow

问题:我想创build1. DCM-1.90.0-Linux.tar.gzRCM-1.90.0-Linux.tar.gz包。

我GOOGLE了,但无法find确切的解决scheme。

让我知道你想要更多的信息。

提前谢谢了。

Solutions Collecting From Web of "在cmake:Linux中使用CPack生成两个不同的包"

我只需要设置CPACK flage。

 set(CPACK_ARCHIVE_COMPONENT_INSTALL ON) 

就在之前

 include(CPack) 

并运行命令。

 make make install make package 

并创建两个不同的包。

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

对于我的不同的安装,我定义了一些变量在CACHE中(例如: set(INCLUDE_MODULE_XYZ OFF CACHE BOOL "Include the module xyz") )定义我在我的安装中放置的内容。 你可以改变运行ccmake的这个变量的值。

在你的情况下,你可以生成你的第一个包,用ccmake改变de配置,然后生成第二个包(如果需要的话)。