몇 번이나 물어 봤지만 필요한 모든 변수를 올바르게 설정 한 것 같습니다. 그리고 cmake는 필요한 구성 요소를 찾지 못합니다.cygwin cmake가 부스트 라이브러리를 찾을 수 없습니다.
나는 성공적 부스트 라이브러리를 컴파일하고이 파일의 구조 (투쟁 ...에) :
C:\boost_1_57_0
| - android
| | - lib
| | - libboost_date_time-gcc-mt-s-1_57.a
| | - libboost_random-gcc-mt-s-1_57.a
| | - libboost_system-gcc-mt-s-1_57.a
| - boost
| - date_time
| | - *.hpp
| - random
| | - *.hpp
| - system
| - *.hpp
이 내 cmake 관련 부분 :
option(BUILD_SHARED_LIBS "Build the shared library" OFF)
option(Boost_USE_STATIC_LIBS "Use Boost static version" ON)
set(BOOST_VER "1.57.0" CACHE STRING "boost version")
set(BOOST_ROOT "/cygdrive/c/boost_1_57_0/")
set(BOOST_INCLUDEDIR "/cygdrive/c/boost_1_57_0/boost/")
set(BOOST_LIBRARYDIR "/cygdrive/c/boost_1_57_0/android/lib/")
# I tried also C: instead of /cygdrive/c, with no success
message(STATUS "BOOST_ROOT = ${BOOST_ROOT}")
message(STATUS "BOOST_INCLUDEDIR = ${BOOST_INCLUDEDIR}")
message(STATUS "BOOST_LIBRARYDIR = ${BOOST_LIBRARYDIR}")
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost ${BOOST_VER} REQUIRED COMPONENTS system date_time random)
과이는이다 내가 얻을 수있는 출력 :
$ cmake ./
-- not define build type, set to release
-- BOOST_ROOT = /cygdrive/c/boost_1_57_0/
-- BOOST_INCLUDEDIR = /cygdrive/c/boost_1_57_0/boost/
-- BOOST_LIBRARYDIR = /cygdrive/c/boost_1_57_0/android/lib/
CMake Error at /usr/share/cmake-3.3.2/Modules/FindBoost.cmake:1245 (message):
Unable to find the requested Boost libraries.
Boost version: 1.57.0
Boost include path: /cygdrive/c/boost_1_57_0
Could not find the following static Boost libraries:
boost_system
boost_date_time
boost_random
No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the
directory containing Boost libraries or BOOST_ROOT to the location of
Boost.
Call Stack (most recent call first):
CMakeLists.txt:32 (find_package)
왜 작동하지 않습니까? 그리고 내가 BOOST_INCLUDEDIR
을 /cygdrive/c/boost_1_57_0/boost/
으로 설정하는 이유는 그가 무시하고 포함 파일을 찾은 것 같습니다. whatever I set BOOST_ROOT to
? 그리고 그는 왜 BOOST_LIBRARYDIR
도 무시하고 있습니까?
Android 용으로 교차 컴파일합니다. cross-compiler 인 cmake에게 말 했나요? – matzeri
@matzeri 예; 그러나 나는 한 발 전진했다. – ocramot
'BOOST_ROOT'는 검색 할 때'BOOST_INCLUDEDIR'와'BOOST_LIBRARYDIR'에 우선합니다. 헤더가 BOOST_ROOT 아래에 있으므로 다른 디렉토리는 검색되지 않습니다. 주요 질문 - 라이브러리를 찾을 수 없습니다 - Boost_DEBUG 변수를 설정하고 구성 중에 표시 될 디버그 메시지를 확인하십시오. 그들은 문제의 열쇠를 얻어야합니다. 아마 당신이 가지고있는 라이브러리의 파일 이름이'FindBoost.cmake' 스크립트의 기대에 맞지 않을 수도 있습니다. – Tsyvarev