Я использую модуль ExtrenalProject cmake для добавления сторонних или внутренних зависимостей в мою сборку. Затем я использую модуль CPack с компонентами для установки только компонентов из текущей кодовой базы следующим образом.
set(CPACK_COMPONENTS_ALL
common-lib
common-include
common-depends
)
Пример одного из этих компонентов, объявленных в CMake:
install(TARGETS common
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
COMPONENT common-lib
)
Однако другие проекты, добавленные с использованием add_subdirectory
, такие как google test или другие внутренние библиотеки, также объявляют цели установки. Когда я бегу
make package
, а затем перечислить содержимое сгенерированных .deb
или .tar
, я вижу содержимое других компонентов, не заданных в переменной CPACK_COMPONENTS_ALL
.
Как правильно заставить CMake и CPack устанавливать только запрошенные компоненты?