Можно ли при помощи cmake/cpack создать пакеты, которые будут иметь отличающиеся устанавливаемые файлы

Есть проект, который собирается при помощи cmake и cpack в виде rpm и deb пакетов.

set(CPACK_GENERATOR "DEB;RPM")

В deb пакет необходимо добавить каталог, который не нужен в rpm пакете. Можно ли это как-нибудь сделать не создавая две отдельные сборки, а попытаться решить эту задачу на уровне cpack? Или воспользоваться еще каким-нибудь способом.

Есть возможность задать конфигурационный файл для cpack

set(CPACK_PROJECT_CONFIG_FILE cpack_config.cmake)

В нём можно определить, какой генератор используется для сборки:

IF (CPACK_GENERATOR MATCHES "DEB")

но в этот момент уже не получается выполнить команду install

CMake Error at cpack_config.cmake:20 (install):
  Unknown CMake command "install".

Ответы (1 шт):

Автор решения: AlexBG

У Cpack есть возможность добавить в пакет дополнительный cmake проект в момент сборки:

CPACK_INSTALL_CMAKE_PROJECTS

IF (CPACK_GENERATOR MATCHES "DEB")
  set(CPACK_INSTALL_CMAKE_PROJECTS "/path_to_project/build;CoolStuff;ALL;/dest_path")
ENDIF()

При этом /path_to_project/build должен содержать файл CMakeCache.txt.

→ Ссылка