我想将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
工具。
答案 0 :(得分:0)
首先,您需要确保pkg-config
能够找到已安装的bluez
版本。如果它不能,那么CMake就不可能。
$ pkg-config --modversion bluez
如果这不能提供您期望的版本,那么您需要找到所需版本的bluez.pc
,并确保其目录位于PKG_CONFIG_PATH的开头。由于您声明使用了sudo make install
,因此bluez.pc
最有可能是/usr/local/lib/pkgconfig/bluez.pc
。 (你需要确定自己。)如果是这样,那么
$ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH} pkg-config --modversion bluez
应该返回您要查找的版本。如果是这样,请执行必要的操作以使更改永久保留在shell中。删除CMake缓存,然后重新生成项目。