При использовании CMake / CPack для сборки пакетов, есть CPACK_DEBIAN_PACKAGE_DEPENDS
и CPACK_RPM_PACKAGE_REQUIRES
для хранения списка пакетов, от которых должен зависеть полученный .deb / .rpm.
Различие полезно, поскольку схемы именования пакетов различаются в разных дистрибутивах. (Пример: дистрибутивы, использующие .deb
s, добавляют основную версию libicu к имени пакета - т.е. libicu60
- тогда как дистрибутивы, использующие .rpm
s, не делают.)
Однако, есть различия между .rpm
-дистро также наиболее заметны между SuSE и RedHat. Например, SuSE называет Boost-пакеты libboost_system1.56.0
et c., Тогда как RedHat использует boost-system
.
Существует ли идеомати c способ либо
- поддерживать
CPACK_RPM_PACKAGE_REQUIRES
определенным образом c или - определить конкретный шаблон именования дистрибутивов / пакетов?
Я знаю способы определения распределения "трудным путем" (синтаксический анализ uname
, проверка файлов в /etc
и т. д.), а затем "жесткое кодирование" имен отдельных пакетов в CPACK_RPM_PACKAGE_REQUIRES
; Мне было интересно, если CMake / CPack предлагает более идиоматический c способ решения этой проблемы.