如何在项目中使用CMake包含bluez最新版本库

时间:2017-04-03 10:01:46

标签: linux bluetooth cmake bluez

我想将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工具。

1 个答案:

答案 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缓存,然后重新生成项目。