2017-04-03 4 views
0

내 C 프로젝트 프로젝트에 bluez 최신 버전 (5.44)을 포함하고 싶습니다. 빌드 목적으로 CMake를 사용하고 있습니다. 나는프로젝트에서 CMake를 사용하여 bluez 최신 버전 라이브러리를 포함하는 방법

pkg_check_modules (BLUEZ REQUIRED bluez) 
include_directories(${BLUEZ_INCLUDE_DIRS}) 
link_directories(${BLUEZ_LIBRARY_DIRS}) 

아래로 pkg_check_modules를 사용하여 시도하지만 항상 이전 버전 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' 파일이 있습니까? [소스 트리] (https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/)에 아무 것도 보이지 않습니다. 유틸리티 'pkg-config'는 그러한 파일이 없으면 아무것도 찾을 수 없습니다. – Tsyvarev

+1

@Tsyvarev'bluez.pc'는 자동 도구로 자동 생성됩니다. 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 

으로 변경해야합니다. 그렇다면 변경 사항을 쉘에 영구적으로 적용하는 데 필요한 것을 수행하십시오. CMake 캐시를 삭제하고 프로젝트를 다시 cmake하십시오.

+0

bluez.pc를 찾았으며 그에 따라 설치 위치와 버전이 변경되었습니다. 감사 –