Код: Выделить всё
install(PROGRAMS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${PROJECT_NAME}
DESTINATION bin
)
install(FILES ${CMAKE_SOURCE_DIR}/${PROJECT_NAME}.service
DESTINATION /usr/lib/systemd/system
)
# ...
SET(CPACK_GENERATOR "DEB")
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "The Maintainer") #required
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
string(REPLACE "_" "-" CPACK_PACKAGE_NAME "${PROJECT_NAME}")
set (CPACK_OUTPUT_CONFIG_FILE "${CMAKE_BINARY_DIR}/BundleConfig.cmake")
include(CPack)
# ...
add_custom_target(package_deb
COMMAND "${CMAKE_CPACK_COMMAND}" "-C" "$" "--config" "${CMAKE_BINARY_DIR}/BundleConfig.cmake"
COMMAND /bin/bash ${CMAKE_CURRENT_BINARY_DIR}/post_package_deb.sh
)
Вам нужны 3 вещи: правила, чтобы содержать dh $@ --with systemd, control должен содержать Build-Depends: dh-systemd, postinst содержать #DEBHELPER# и разумную текущую систему сборки [...]
Я решил эту проблему, вызвав dh_systemd_enable (чтобы служба запускалась по умолчанию) и dh_systemd_start (чтобы фактически запустить ее после установки) вручную из цели override_dh_auto_install в правилах, поэтому это выглядит так :
Код: Выделить всё
%:
dh $@ --with-systemd
override_dh_auto_install:
dh_auto_install
dh_systemd_enable || true
dh_systemd_start || true
Я заметил, что CPACK_DEBIAN_PACKAGE_MAINTAINER заканчивается как поле Maintenanceer: в автоматически созданном файле управления после запуска моего make package_deb - но что мне делать с правилами , чтобы я мог использовать вышеуказанные переопределения? Я не вижу многого (Ctrl-F "/rules" - 0 результатов) в https://cmake.org/cmake/help/v3.4/module/CPackDeb.html (я также видел, что существует нечто под названием https: //gitlab.kitware.com/debian/dh-cmake, но я не могу сказать, связано ли это с моей проблемой или может ли она помочь в решении моей проблемы).
Подробнее здесь: https://stackoverflow.com/questions/784 ... bian-rules