我对CMake和DBus都很陌生。我正按照这里的指南(链接)编写一个基本程序并使其编译并运行。
我遇到的第一个问题是我的程序找不到
<dbus/dbus.h>
我通过向我的 CMakeList.txt 添加一些包含目录来解决了这个问题。目前,我的 CMakeLists.txt 如下:
...
include_directories(/usr/lib/)
include_directories(/usr/include/dbus-1.0/)
include_directories(/usr/lib/x86_64-linux-gnu/dbus-1.0/include)
include_directories(/usr/include/glib-2.0)
include_directories(/usr/lib/x86_64-linux-gnu/glib-2.0/include/)
set (LIBS
dbus-1
dbus-glib-1
)
add_executable(mydbus mydbus.cpp)
target_link_libraries(mydbus ${LIBS} )
现在,我的程序抱怨找不到 dbus-arch-deps.h 文件。
/usr/include/dbus-1.0/dbus/dbus.h:29:33: fatal error: dbus/dbus-arch-deps.h: No such file or directory
#include <dbus/dbus-arch-deps.h>
我知道解决这个问题的方法是使用正确的命令行标志或pkg-config。就像在这里和其他大量帖子中所讨论的那样。
但是,我不知道如何配置CMakeLists.txt以获得类似的效果。
我的猜测是在CMakeLists.txt中添加类似于find_package(dbus-1)的内容。如果我的想法正确,我将不得不编写自己的Finddbus-1.cmake。这听起来正确吗?还是有更简单的方法吗?
我将非常感谢任何指导。
<dbus/dbus-arch-deps.h>
,因此包含路径不应包含尾随的dbus
子目录。顺便问一下,在您的机器上,头文件dbus-arch-deps.h
的确切路径是什么? - Tsyvarevpkg-config --cflags --libs glib-2.0
相同的行为呢? - sdevikarfind_package()
和pkg_check_modules
在DBus中进行搜索。pkg_check_modules
也可以应用于glib-2.0,这将产生pkg-config的效果。 - Tsyvarev