我有一个 systemd *.service 文件,我想使用 CMake 构建系统来安装它。
根据免费桌面政策Debian 使用这些进入/lib/systemd/system
.在红帽政策这些进去/usr/lib/systemd/system
。
有没有 CMake 原生的方法来设置这个?
Gnu安装目录可以理解的是,它没有为 systemd 提供路径。
到目前为止我的解决方案是:
option(USE_REDHAT_PATHS "Use Red Hat policy for install-paths" ON)
if ( ${USE_REDHAT_PATHS} )
set( _SYSTEMD_DIR "/usr/lib/systemd/system" )
else()
set( _SYSTEMD_DIR "/lib/systemd/system" )
endif()
install(FILES myservice.service DESTINATION ${_SYSTEMD_DIR})
它可以工作,但需要用户端配置。 ACMAKE_INSTALL_SYSTEMD
或CMAKE_REDHAT
会有用。
使用ExecuteProcess
调用uname -v
可能会有所帮助,但是有很多方法可能会破坏它,除非我们也支持所有可能的上游发行版。