我想将 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
工具。
最佳答案
首先,您需要确保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 缓存,然后重新创建您的项目。
关于linux - 如何在项目中使用 CMake 包含 bluez 最新版本库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43181692/