У меня проблема с созданием двух пакетов Debian с CPack и CMake. Я сделал пример из Вот и мне удалось создать два разных пакета Debian, но я хочу, чтобы у каждого из них были свои зависимости. В результате получается CMakeLists.txt:
cmake_minimum_required (ВЕРСИЯ 2.8.0) проект (MyLib) add_library (mylib mylib.cpp) add_executable (mylibapp mylibapp.cpp) target_link_libraries (mylibapp mylib) установить (TARGETS mylib АРХИВ DESTINATION ~ / Загрузки / ComponentExampleStart / lib Компонент библиотеки) установить (TARGETS mylibapp RUNTIME DESTINATION ~ / Загрузки / ComponentExampleStart / bin КОМПОНЕНТНЫЕ ПРИЛОЖЕНИЯ) установить (ФАЙЛЫ mylib.h DESTINATION ~ / Загрузки / ComponentExampleStart / include КОМПОНЕНТНЫЕ заголовки) file (WRITE dummy_main1.c "int main (int argc, char ** argv) {return 0;}") add_executable (dummy_main1 dummy_main1.c) УСТАНОВИТЬ (ФАЙЛЫ $ {CMAKE_CURRENT_SOURCE_DIR} / dummy_main1 DESTINATION / tmp Заголовки компонентов ДОПОЛНИТЕЛЬНЫЕ РАЗРЕШЕНИЯ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE) file (WRITE dummy_main2.c "int main (int argc, char ** argv) {return 0;}") add_executable (dummy_main2 dummy_main2.c) УСТАНОВИТЬ (FILES $ {CMAKE_CURRENT_SOURCE_DIR} / dummy_main2 DESTINATION / tmp COMPONENT mylibapp ДОПОЛНИТЕЛЬНЫЕ РАЗРЕШЕНИЯ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE) SET (CPACK_GENERATOR "DEB") SET (CPACK_SOURCE_GENERATOR TGZ) SET (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) SET (CPACK_SET_DESTDIR "включено") установлено (CPACK_DEB_COMPONENT_INSTALL ON) набор (CPACK_PACKAGE_NAME "MyLib") набор (CPACK_PACKAGE_VENDOR "CMake.org") set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "MyLib - Пример установки компонента CPack") набор (CPACK_PACKAGE_VERSION "1.0.0") набор (CPACK_PACKAGE_VERSION_MAJOR "1") установлено (CPACK_PACKAGE_VERSION_MINOR "0") установить (CPACK_PACKAGE_VERSION_PATCH "0") набор (CPACK_PACKAGE_INSTALL_DIRECTORY "Пример компонента CPack") набор (заголовки библиотек приложений CPACK_COMPONENTS_ALL) набор (CPACK_COMPONENT_APPLICATIONS_GROUP "Время выполнения") набор (CPACK_COMPONENT_LIBRARIES_GROUP "Разработка") набор (CPACK_COMPONENT_HEADERS_GROUP "Разработка") набор (CPACK_COMPONENT_LIBRARIES_DEPENDS "libxml2") набор (CPACK_COMPONENT_HEADERS_DEPENDS "libxml2") набор (CPACK_DEBIAN_PACKAGE_DEPENDS "libusb-1.0-0") SET (CPACK_PACKAGE_CONTACT "Пример") SET (CPACK_PACKAGE_FILE_NAME "$ {CMAKE_PROJECT_NAME} _ $ {VERSION} _ $ {CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") включают в себя (CPack)
(НОТА dummy_main1 и dummy_main2 заставляют shlibdeps работать, потому что ему нужен как минимум один исполняемый файл для каждого пакета).
Моя цель — создать 2 разных пакета Debian с разными зависимостями, например:
MyLib_1.0.0_amd64-Developers.deb --- depends on ---> libxml2
MyLib_1.0.0_amd64-Runtime.deb --- depends on ---> lubusb-1.0-0
но я не нахожу макрос CPACK, чтобы сделать это. Я прочитал много форумов и документации, но ничего из этого я не проверял. Макрос CPACK_DEBIAN_PACKAGE_DEPENDS работает нормально, но он устанавливает одинаковые зависимости для обоих пакетов. Есть ли способ архивировать мою цель? Я использую CMake 2.8, чтобы сделать это.
Спасибо!
Ну, наконец-то мне удалось изолировать зависимости. Проблема была в версии CMake, которую я использовал (2.8). Это можно сделать в последних выпусках (в настоящее время используется 3.3) с помощью макроса CPack: CPACK_DEBIAN__PACKAGE_DEPENDS
Других решений пока нет …