Cmake отказывается найти dbus-0 во время компиляции - PullRequest
0 голосов
/ 07 января 2019

Привет, я пытаюсь заставить cmake найти dbus-1

Я получаю эту ошибку, когда пытаюсь скомпилировать

--   Checking for module 'dbus-1'
--   No package 'dbus-1' found

Я пробовал эту команду

pkg-config --cflags dbus-glib-1

Я получаю вывод

-I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include

Я отредактировал CMakeLists.txt и добавил

include_directories(/usr/include/dbus-1.0/)

Что я делаю не так?

1 Ответ

0 голосов
/ 07 января 2019

Первое, что нужно знать о CMake в этой ситуации, это не использовать include_directories для включения любых системных каталогов с жестко заданным путем (что вы и делаете сейчас). Вместо этого вам следует использовать модуль CMake FindPkgConfig, который будет вызывать pkg-config и получать для вас эти каталоги включения.

Для этого должно работать что-то вроде следующего.

include( FindPkgConfig )
pkg_check_modules( dbus REQUIRED dbus-1 )

# Add the include directories to our target executable/shared object.
# In this case, our target is called 'executable' and must have been
# created by a previous call to either 'add_executable' or 'add_library'
target_include_directories( executable PUBLIC ${dbus_INCLUDE_DIRECTORIES} )
...