Как обработать «Ошибка Cmake: Невозможно найти запрошенные библиотеки Boost»? - PullRequest
1 голос
/ 11 июля 2019

Я пытаюсь построить этот проект https://github.com/DLuensch/StereoVision-ADCensus, в среде Windows10.Как он говорит, мне нужно установить openCV, boost, libConfig, PCL, OpenMP, Qt 4.8X.Я на самом деле не знаю, что это за библиотеки, но я просто следую инструкциям.Когда я попробовал команду cmake .. для сборки проекта, CMake поднял ошибку «Невозможно найти запрошенные библиотеки Boost», которая показана ниже

E:\>cd E:\Projects\VisualStudioProjects\StereoVision-ADCensus-master\StereoVision-ADCensus-master\ADCensusBM\build

E:\Projects\VisualStudioProjects\StereoVision-ADCensus-master\StereoVision-ADCensus-master\ADCensusBM\build>cmake ..
-- Building for: Visual Studio 15 2017
-- The C compiler identification is MSVC 19.15.26730.0
-- The CXX compiler identification is MSVC 19.15.26730.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.15.26726/bin/Hostx86/x86/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.15.26726/bin/Hostx86/x86/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.15.26726/bin/Hostx86/x86/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.15.26726/bin/Hostx86/x86/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenMP_C: -openmp (found version "2.0")
-- Found OpenMP_CXX: -openmp (found version "2.0")
-- Found OpenMP: TRUE (found version "2.0")
OPENMP FOUND
CMake Warning (dev) at CMakeLists.txt:27 (find_package):
  Policy CMP0074 is not set: find_package uses <PackageName>_ROOT variables.
  Run "cmake --help-policy CMP0074" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  Environment variable Boost_ROOT is set to:

    E:\BOOST\boost_1_70_0\boost_1_70_0

  For compatibility, CMake is ignoring the variable.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at D:/Applications/CMake/share/cmake-3.14/Modules/FindBoost.cmake:2165 (message):
  Unable to find the requested Boost libraries.

  Boost version: 1.70.0

  Boost include path: E:/BOOST/boost_1_70_0/boost_1_70_0

  Could not find the following static Boost libraries:

          boost_filesystem
          boost_system

  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:27 (find_package)


CMake Error at CMakeLists.txt:36 (find_package):
  By not providing "FindPCL.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "PCL", but
  CMake did not find one.

  Could not find a package configuration file provided by "PCL" (requested
  version 1.2) with any of the following names:

    PCLConfig.cmake
    pcl-config.cmake

  Add the installation prefix of "PCL" to CMAKE_PREFIX_PATH or set "PCL_DIR"
  to a directory containing one of the above files.  If "PCL" provides a
  separate development package or SDK, be sure it has been installed.


-- Configuring incomplete, errors occurred!
See also "E:/Projects/VisualStudioProjects/StereoVision-ADCensus-master/StereoVision-ADCensus-master/ADCensusBM/build/CMakeFiles/CMakeOutput.log".

Я не очень знаком с CMake или BOOST,на самом деле, я не знал их до вчерашнего дня.Поэтому я не могу точно понять, в чем проблема.

Сначала я искал файлы в пути BOOST, и, да, нет файла с именем "boost_filesystem" или "boost_system".Я сомневаюсь, что моя буст-версия не соответствуетЗатем я посмотрел в файл "CMakeLists.txt".Я нашел утверждение типа

# Under Windows the system variable "BOOST_ROOT" must be set to the location of the root directory of Boost.
if(WIN32)
  set(Boost_USE_STATIC_LIBS ON)
  set(Boost_USE_STATIC ON)
endif(WIN32)
SET(Boost_ADDITIONAL_VERSIONS "1.47" "1.47.0")
set(Boost_NO_BOOST_CMAKE ON)
find_package(Boost 1.40.0 COMPONENTS filesystem system REQUIRED)
set(BOOST_FOUND ${Boost_FOUND})
set(BOOST_INCLUDE_DIRS "${Boost_INCLUDE_DIR}")
set(BOOST_LIBRARY_DIRS "${Boost_LIBRARY_DIRS}")
set(BOOST_LIBRARIES ${Boost_LIBRARIES})
INCLUDE_DIRECTORIES(${BOOST_INCLUDE_DIRS})
SET(LIBS ${LIBS} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${Boost_DATE_TIME_LIBRARY})

Означает ли это, что я должен использовать BOOST 1.47.0 (я скачал 1.70.0 сейчас)?И означает ли "set (Boost_NO_BOOST_CMAKE ON)", что я могу даже построить этот проект без CMake?Так как я думаю, что прогресс CMake завершился неудачей из-за не пропуска BOOST, а PCL (с которым я еще не пытался справиться).Если бы я мог пропустить обработку проблем с BOOST, я бы хотел, потому что я спешу.Или я должен иметь дело с этим?Надеюсь на помощь.Заранее спасибо:)

1 Ответ

0 голосов
/ 11 июля 2019

cmake просто проблема в том, что он не может найти файлы библиотеки повышения boost_filesystem и boost_system для связи с установленной версией boost.

cmake необходимо установить BOOST_LIBRARYDIR в каталог, в котором хранятся файлы библиотеки, как вы установили BOOST_ROOT в каталог, в который вы установили boost.

Файлы библиотеки boost по умолчанию не создаются при установке boost, см .: boost: подготовка к использованию двоичного файла библиотеки . Вы можете собрать библиотеки самостоятельно, как описано здесь . Тем не менее, проще просто загрузить и установить соответствующий двоичный файл из здесь .

Примечание: строка файла CMakeLists.txt:

find_package(Boost 1.40.0 COMPONENTS filesystem system REQUIRED)

требуется минимум boost версия 1.40.0. Вы должны быть в порядке с буст-версией 1.70, если что-то не изменилось, что нарушило обратную совместимость.
Версии 1.40 и 1.47, указанные в файле CMakeLists.txt, очень старые ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...