Создайте два разных пакета, используя CPack в cmake: 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 / ЭКС / 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 Wiki
а также
CPack
а также
Переполнение стека

Проблема:
Я хочу создать 1. DCM-1.90.0-Linux.tar.gz и 2. RCM-1.90.0-Linux.tar.gz пакет.

Я погуглил, но не смог найти точного решения.

Дайте мне знать, если вам нужна дополнительная информация.

Спасибо заранее.

4

Решение

Мне просто нужно включить флаг CPACK.

set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)

как раз перед

include(CPack)

И запустить команду.

make
make install
make package

И его создать два разных пакета.

2

Другие решения

Я не использую CPack, так что, возможно, есть лучшее решение, чем следующее.

Для моих различных установок я определяю некоторые переменные в CACHE (например: set(INCLUDE_MODULE_XYZ OFF CACHE BOOL "Include the module xyz")) определение того, что я положил в мою установку. Вы можете изменить значение этой переменной, запустив ccmake.

В вашем случае вы можете сгенерировать свой первый пакет, изменить конфигурацию с помощью ccmake, а затем сгенерировать второй пакет (при необходимости).

0