我想包括bluez最新版本(5.44)到我的C程序项目。我正在使用CMake进行构建。我尝试使用pkg_check_modules
如下
pkg_check_modules (BLUEZ REQUIRED bluez)
include_directories(${BLUEZ_INCLUDE_DIRS})
link_directories(${BLUEZ_LIBRARY_DIRS})
但它总是找到旧版本5.37。我怎么才能把这个指向最新版本?
我也试过了,但它抛出了如下错误。
pkg_check_modules (BLUEZ REQUIRED bluez=5.44)
include_directories(${BLUEZ_INCLUDE_DIRS})
link_directories(${BLUEZ_LIBRARY_DIRS})
获取时出错:
Checking for module 'bluez=5.44'
--
CMake Error at /usr/share/cmake-3.5/Modules/FindPkgConfig.cmake:367 (message):
A required package was not found
Call Stack (most recent call first):
/usr/share/cmake-3.5/Modules/FindPkgConfig.cmake:532 (_pkg_check_modules_internal)
CMakeLists.txt:30 (pkg_check_modules)
我下载了最新的bluez版本,并使用sudo make install
构建和安装。我可以找到并使用bluetoothctl
工具。
2条答案
按热度按时间dfty9e191#
首先,您需要确保
pkg-config
可以找到您安装的bluez
版本。如果它不能,那么CMake也不能。如果这并没有给予您所期望的版本,那么您需要找到所需版本的
bluez.pc
,并确保其目录位于PKG_CONFIG_PATH的开头。既然你说你使用的是sudo make install
,那么你想要的bluez.pc
很可能是/usr/local/lib/pkgconfig/bluez.pc
。(你需要自己去确认一下。)如果是这样的话,应该返回您正在寻找的版本。如果是这样的话,请执行必要的操作,使该更改对您的shell是永久性的。删除CMake缓存,然后重新创建项目。
ktca8awb2#
虽然这个问题有一个手动编译的
Bluez
版本,但在许多情况下,人们在任何Debian系统上进行Bluez
到apt
的标准安装后可能会遇到完全相同的问题。然而,要在一个项目中使用Bluez进行开发,还必须安装Bluez开发文件。这会导致
这将依次将bluez.pc文件安装到标准位置,使
pkg-config --modversion bluez
和任何pkg_check_modules (BLUEZ REQUIRED bluez)
都能正确解析。