Installing arbitrary files is accomplished by adding install commands into your 
CMakeLists. The documentation for the command is here: 
https://cmake.org/cmake/help/v3.3/command/install.html

For something like an init script or systemd unit file they are going to live 
outside the normal installation prefix. So you will need to do something like 
the following:

if (IS_DIRECTORY /usr/lib/systemd/system)
    install(FILES myprog.service DESTINATION /usr/lib/systemd/system)
else()
    install(FILES myprog DESTINATION /etc/init.d)
endif()

That code block will install the myprog.service file into 
/usr/lib/systemd/system if that directory exists and if not will install the 
myprog file (init script) int /etc/init.d

I have found that checking if the usual systemd directory exists is sufficient 
to determine that systemd is present on the build system. If you are compiling 
on one debian version but want to support multiple versions then you will most 
likely install your init script and systemd files into some place specific to 
your application and use a post install script to detect which version should 
get installed. This will however bypass the package manager for installing 
these and thus if the package is removed/altered dpkg wont handle anything for 
you regarding these files.

Check out the CpackDeb documentation for all the various variables that can be 
set to alter how the package builds and installs: 
https://cmake.org/cmake/help/v3.3/module/CPackDeb.html
In particular if you need to have postinstall scripts then you will want to set 
the variable CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
--
Matt Keeler


On November 12, 2015 at 07:37:14, Šimon Tóth 
([email protected]<mailto:[email protected]>) wrote:

I have managed to port my SW to CMake fine, but now I'm running into
issues with the CPack package generation (debian packages for now).

I'm using the "dh_xxxx" commands in the package generation for debian.
What would be the equivalent in CMake? In particular, installing cron
scripts, init.d scripts and systemd service files.

Also is there a way to detect the presence systemd (and install systemd
service file if this is the case, init.d script otherwise)?

--
RNDr. Šimon Tóth
FI@MU ([email protected]) | CESNET ([email protected])
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to