Я знаю, что это было задано несколько раз, но я, кажется, правильно установил все необходимые переменные, и 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/
, но он, кажется, игнорирует его и ищет файлы include в whatever I set BOOST_ROOT to
? И почему он тоже игнорирует BOOST_LIBRARYDIR
?
Вы используете кросс-компиляцию для Android. Вы рассказали cmake, который является кросс-компилятором? – matzeri
@matzeri да; но я застрял на шаг раньше. – ocramot
'BOOST_ROOT' имеет приоритет против' BOOST_INCLUDEDIR' и 'BOOST_LIBRARYDIR' при поиске вещей. Поскольку заголовки находятся под 'BOOST_ROOT', другие каталоги не выполняются. Что касается основного вопроса - библиотеки не найдены - установите переменную 'Boost_DEBUG' и проверьте отладочные сообщения, которые будут отображаться во время конфигурации. Они должны получить ключ к этой проблеме. Вероятно, имена библиотек, которые у вас есть, не соответствуют ожиданиям сценария FindBoost.cmake. – Tsyvarev