CMake无法找到BOOST库

时间:2014-06-11 22:01:15

标签: c++ bash boost cmake

我尝试了一切:

  1. 配置环境变量
  2. 制作新鲜的内容
  3. 从源
  4. 重新安装BOOST
  5. sudo apt-get install libboost-all-dev
  6. 但仍然有以下错误:

    CMake Error at /usr/share/cmake-2.8/Modules/FindBoost.cmake:1131 (message):
     Unable to find the requested Boost libraries.
    
     Unable to find the Boost header files.  Please set BOOST_ROOT to the root
     directory containing Boost or BOOST_INCLUDEDIR to the directory containing
     Boost's headers.
    Call Stack (most recent call first):
       CMakeLists.txt:147 (find_package)
    
    
    CMake Error at /usr/share/cmake-2.8/Modules/FindBoost.cmake:1131 (message):
    Unable to find the requested Boost libraries.
    
    Unable to find the Boost header files.  Please set BOOST_ROOT to the root
    directory containing Boost or BOOST_INCLUDEDIR to the directory containing
    Boost's headers.
    

    提升的源代码目录:/usr/local/src/boost_1_45_0 提升图书馆路径:/usr/local/lib Boost Header文件:/usr/local/include/boost

    以下是bashrc file

    BOOST_ROOT="/usr/local/src/boost_1_45_0"
    Boost_LIBRARY_DIRS="/usr/local/lib"
    BOOST_INCLUDEDIR="/usr/local/src/boost_1_45_0"
    

    如何解决这些错误?我错过了什么吗?

    编辑:

    cmake -DCMAKE_TOOLCHAIN_FILE=$ANDTOOLCHAIN -DBOOST_ROOT=/usr/local/src/boost_1_45_0 -DBOOST_INCLUDEDIR=/usr/local/include/boost -DBOOST_LIBRARYDIR=/usr/local/lib -DPYTHON_LIBRARIES=/usr/local/lib/python2.7 -DPYTHON_INCLUDE_DIRS=/usr/include/python2.7 -DCMA-DRDK_BUILD_PYTHON_WRAPPERS=
    

9 个答案:

答案 0 :(得分:35)

尝试使用以下库完成cmake进程:

sudo apt-get install cmake libblkid-dev e2fslibs-dev libboost-all-dev libaudit-dev

答案 1 :(得分:8)

我在CMakeLists.txt中使用它来设置来自cmake的提升。尝试类似的东西(确保更新你的boost安装路径)。

SET (BOOST_ROOT "/opt/boost/boost_1_57_0")
SET (BOOST_INCLUDEDIR "/opt/boost/boost-1.57.0/include")
SET (BOOST_LIBRARYDIR "/opt/boost/boost-1.57.0/lib")

SET (BOOST_MIN_VERSION "1.55.0")
set (Boost_NO_BOOST_CMAKE ON)
FIND_PACKAGE(Boost ${BOOST_MIN_VERSION} REQUIRED)
if (NOT Boost_FOUND)
  message(FATAL_ERROR "Fatal error: Boost (version >= 1.55) required.")
else()
  message(STATUS "Setting up BOOST")
  message(STATUS " Includes - ${Boost_INCLUDE_DIRS}")
  message(STATUS " Library  - ${Boost_LIBRARY_DIRS}")
  include_directories(${Boost_INCLUDE_DIRS})
  link_directories(${Boost_LIBRARY_DIRS})
endif (NOT Boost_FOUND)

这将搜索默认路径(/usr/usr/local)或通过cmake变量(BOOST_ROOTBOOST_INCLUDEDIRBOOST_LIBRARYDIR)提供的路径。它适用于cmake> 2.6。

答案 2 :(得分:1)

似乎答案在评论和编辑中,但澄清这应该适合你:

export BUILDDIR='your path to  build directory here'
export SRCDIR='your path to source dir here'
export BOOST_ROOT="/opt/boost/boost_1_57_0"
export BOOST_INCLUDE="/opt/boost/boost-1.57.0/include"
export BOOST_LIBDIR="/opt/boost/boost-1.57.0/lib"
export BOOST_OPTS="-DBOOST_ROOT=${BOOST_ROOT} -DBOOST_INCLUDEDIR=${BOOST_INCLUDE} -DBOOST_LIBRARYDIR=${BOOST_LIBDIR}"
(cd ${BUILDDIR} && cmake ${BOOST_OPTS} ${SRCDIR})

您需要将参数指定为命令行参数,或者您可以使用工具链文件,但cmake不会触及您的环境变量。

答案 3 :(得分:0)

我只是想指出FindBoost宏可能正在寻找早期版本,例如1.58.0,当你可能安装了1.60.0时。我建议从你试图构建的任何东西弹出FindBoost宏,并检查是否是这种情况。您只需编辑它即可包含您的特定版本。 (这是我的问题。)

答案 4 :(得分:0)

感谢Paul-g的建议。就我而言,这有点不同。

我按照https://www.boost.org/doc/libs/1_59_0/more/getting_started/unix-variants.html

的步骤5安装了Boost。

然后在“ FindBoos.cmake”中添加PATH目录,该目录位于/usr/local/share/cmake-3.5/Modules中:

SET (BOOST_ROOT "../boost_1_60_0")
SET (BOOST_INCLUDEDIR "../boost_1_60_0/boost")
SET (BOOST_LIBRARYDIR "../boost_1_60_0/libs")

SET (BOOST_MIN_VERSION "1.55.0")
set (Boost_NO_BOOST_CMAKE ON)

答案 5 :(得分:0)

我第一次想在python(GPU版本)上安装LightGBM时遇到相同的错误。

您可以使用以下命令行简单地对其进行修复:

sudo apt-get install cmake libblkid-dev e2fslibs-dev libboost-all-dev libaudit-dev

boost库将被安装,您可以继续安装过程。

答案 6 :(得分:0)

尝试将-DBoost_DEBUG=TRUE添加到cmake命令行中,以查看FindBoost宏的搜索位置。

答案 7 :(得分:0)

简而言之,如果您在自定义路径中安装boost,所有头文件都必须位于$ {path} / boost /中。

如果您想知道为什么在设置BOOST_ROOT/BOOST_INCLUDEDIR后cmake找不到所需的Boost库,则可以选中cmake install location path_to_cmake/share/cmake-xxx/Modules/FindBoost

cmake,它将在Boost_INCLUDE_DIR的{​​{1}}中找到boost/config.hpp。这意味着您的boost头文件必须为BOOST_ROOT,其他任何格式(例如${path}/boost/)都适合CMakeLists.txt中的${path}/boost-x.y.z

答案 8 :(得分:0)

我在一个高山docker容器中遇到了同样的问题,我的解决方案是添加boost-dev apk库,因为libboost-dev不可用。