简体   繁体   English

如何处理“ Cmake错误:无法找到请求的Boost库”?

[英]How to handle “Cmake Error: Unable to find the requested Boost libraries”?

I'm trying to build this project https://github.com/DLuensch/StereoVision-ADCensus , in Windows10 environment. 我正在尝试在Windows10环境中构建此项目https://github.com/DLuensch/StereoVision-ADCensus As it tells, I need openCV, boost, libConfig, PCL, OpenMP, Qt 4.8X established. 事实证明,我需要建立openCV,boost,libConfig,PCL,OpenMP,Qt 4.8X。 I don't really know what all of those libraries are, but, well, I just follow the instruction provided. 我真的不知道所有这些库是什么,但是,我只是按照提供的说明进行操作。 When I tried the cmake .. command to build the project, CMake raised error "Unable to find the requested Boost libraries", which is shown as below 当我尝试使用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".

I'm not so familiar about CMake or BOOST. 我对CMake或BOOST不太熟悉。 in fact, I hadn't known them until yesterday. 实际上,直到昨天我才认识他们。 So I can't clearly figure out what the problem is. 因此,我无法清楚地找出问题所在。

First I searched the files in the BOOST path, and, yes, there's no file named "boost_filesystem" or "boost_system". 首先,我搜索了BOOST路径中的文件,是的,没有名为“ boost_filesystem”或“ boost_system”的文件。 I doubt if my boost version is not matching. 我怀疑我的增强版是否不匹配。 Then I looked into the "CMakeLists.txt" file. 然后,我查看了“ CMakeLists.txt”文件。 I found statement like 我发现这样的声明

# 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})

Does it means I should use BOOST 1.47.0 (I've downloaded 1.70.0 now)? 这是否意味着我应该使用BOOST 1.47.0(我现在下载了1.70.0)? And, does "set(Boost_NO_BOOST_CMAKE ON)" means I can even build this project without CMake? 并且,“ set(Boost_NO_BOOST_CMAKE ON)”是否意味着我甚至可以在没有CMake的情况下构建该项目? Since I think the CMake progress is shut down failed because of not the missing of BOOST, but PCL(which I haven't tried to handle yet). 因为我认为CMake的关闭进度失败是因为不是缺少BOOST,而是因为PCL(我还没有尝试处理)。 If I can skip handling with BOOST problems, I'd like to, because I'm in somewhat a hurry. 如果我可以跳过有关BOOST问题的处理,那么我想,因为我有点着急。 Or do I have to deal woth it? 还是我必须解决这个问题? Hoping for help. 希望获得帮助。 Thanks in advance :) 提前致谢 :)

cmake just has an issue that it can't find the boost library files boost_filesystem and boost_system to link with the version of boost that you've installed. cmake只是存在一个问题,即找不到升压库文件boost_filesystemboost_system与您已安装的boost版本链接。

cmake needs BOOST_LIBRARYDIR to be set to the directory where the library files are stored, like you set BOOST_ROOT to the directory where you installed boost . cmake需要将BOOST_LIBRARYDIR设置为存储库文件的目录,就像将BOOST_ROOT设置为安装boost的目录一样。

The boost library files are not built by default when you install boost see: boost: prepare to use a library binary . 安装boost时,默认情况下不构建boost库文件,请参见: boost:准备使用库二进制文件 You can build the libraries yourself, as described here . 你可以建立自己的图书馆,描述在这里 However, it is easier just to download and install the relevant binary from here . 但是,从此处下载并安装相关的二进制文件更加容易。

Note: the CMakeLists.txt file line: 注意: CMakeLists.txt文件行:

find_package(Boost 1.40.0 COMPONENTS filesystem system REQUIRED)

requires a minimum boost version of 1.40.0. 需要最低 boost版本1.40.0。 You should be OK with boost version 1.70 unless something has changed which has broken backward compatibility. 您应该对Boost版本1.70没问题,除非发生了一些更改,从而破坏了向后兼容性。
Versions 1.40 and 1.47 referenced in the CMakeLists.txt file are very old... CMakeLists.txt文件中引用的1.40和1.47版本非常旧...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM