2017-04-03 57 views
0

我想將bluez最新版本(5.44)包含到我的C程序項目中。我正在使用CMake進行構建。我嘗試使用pkg_check_modules作爲如下如何在項目中包含使用CMake的bluez最新版本庫

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

你有用於手動安裝bluez(5.44)的'.pc'文件嗎?我在[source tree](https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/)中看不到任何人。沒有這樣的文件,Utility'pkg-config'找不到任何東西。 – Tsyvarev

+1

@Tsyvarev'bluez.pc'由autotools自動生成。 OP的'pkg-config'很可能不知道它的安裝位置。 – nega

回答

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緩存,然後重新制作您的項目。

+0

我找到了bluez.pc並相應地更改了安裝位置和版本。謝謝 –

相關問題