Переменные Cmake для systemd пусты - PullRequest
0 голосов
/ 26 февраля 2019

Я хочу запустить / остановить службу systemd из моего проекта C ++.Поэтому мне нравится использовать systemd lib и предоставленные заголовки.Я использую cmake для генерации make-файлов.Я пытаюсь получить systemd в cmake через

pkg_check_modules(SDBUS REQUIRED systemd)

, который на самом деле работает как

message(STATUS "FOUND" ${SDBUS_FOUND}) возвращает 1.

Однако все другие необходимые переменные, созданныеcmake вроде

message(STATUS "LIBS" ${SDBUS_LIBRARIES})
message(STATUS "LIB_DIRS" ${SDBUS_LIBRARY_DIRS})
message(STATUS "LDFLAGS" ${SDBUS_LDFLAGS})
message(STATUS "LDFLAGS_OTHER" ${SDBUS_LDFLAGS_OTHER})
message(STATUS "INCLUDE DIRS" ${SDBUS_INCLUDE_DIRS})
message(STATUS "CFLAGS" ${SDBUS_CFLAGS})
message(STATUS "CFLAGS_OTHER" ${SDBUS_CFLAGS_OTHER})

пусто.Что приводит к ошибке компоновщика при компиляции проекта.В самом деле, когда вы звоните

pkg-config --libs systemd

, он тоже пустой.Кто-нибудь знает, как решить эту проблему и почему вся эта информация недоступна для systemd?

1 Ответ

0 голосов
/ 27 февраля 2019

Вы можете видеть, что systemd не предоставляет их

%pkg-config systemd --print-variables
binfmtdir
catalogdir
containeruidbasemax
containeruidbasemin
dynamicuidmax
dynamicuidmin
modulesloaddir
pcfiledir
prefix
sysctldir
systemdshutdowndir
systemdsleepdir
systemdsystemconfdir
systemdsystemgeneratordir
systemdsystempresetdir
systemdsystemunitdir
systemdsystemunitpath
systemduserconfdir
systemdusergeneratordir
systemduserpresetdir
systemduserunitdir
systemduserunitpath
systemdutildir
systemgidmax
systemuidmax
sysusersdir
tmpfilesdir

Так что FindPkgConfig модуль здесь бесполезен ...

вы должны использовать libsystemd-dev вместо

, тогда у вас будет

%pkg-config libsystemd --print-variables
exec_prefix
includedir
libdir
pcfiledir
prefix

%pkg-config libsystemd --libs           
-lsystemd
...