web-dev-qa-db-ja.com

CMakeはBOOSTライブラリを見つけることができません

私はすべてを試してみました:

  1. 環境変数を構成する
  2. 新しいビルドを作成する
  3. ソースからBOOSTを再インストールします
  4. Sudo apt-get install libboost-all-dev

しかし、まだ次のエラーが発生します:

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 Boostライブラリパス:/usr/local/lib Boostヘッダーファイル:/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=
43
Amit Pal

次のライブラリを使用してcmakeプロセスを完了してください。

Sudo apt-get install cmake libblkid-dev e2fslibs-dev libboost-all-dev libaudit-dev
38
Alex Nevsky

CMakeLists.txtでcmakeからのブーストを設定するためにこれを使用しています。同様のことを試してください(ブーストのインストールへのパスを更新してください)。

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で動作します。

8
paul-g

LightGBMをpython(GPUバージョン)に初めてインストールしようとしたときに、同じエラーが発生しました。

このコマンドラインで簡単に修正できます:

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

ブーストライブラリがインストールされ、インストールプロセスを続行しても問題ありません。

2
Cs20

答えはコメントにあり、編集としてのものですが、これを明確にするためにあなたのために働くはずです:

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は環境変数に影響しません。

1
Alex

-DBoost_DEBUG=TRUEcmakeコマンドラインに追加して、FindBoostマクロが検索している場所を確認してください。

0
Andrew Marshall

Alpineドッカーコンテナー内でも同じ問題が発生しました。libboost-devが利用できないため、私のソリューションはboost-dev apkライブラリを追加することでした。

0

手短に長い答え、カスタムパスにブーストをインストールする場合、すべてのヘッダーファイルは$ {path}/boost /になければなりません。

BOOST_ROOT/BOOST_INCLUDEDIRを設定した後、cmakeが要求されたBoostライブラリを見つけられない理由を知りたい場合は、cmake install location path_to_cmake/share/cmake-xxx/Modules/FindBoostを確認できます。

Boost_INCLUDE_DIRboost/config.hppBOOST_ROOTを見つけるcmake。つまり、ブーストヘッダーファイルは${path}/boost/である必要があり、他の形式(${path}/boost-x.y.zなど)はCMakeLists.txtのfind_packageには適していません。

0
sniper lin

FindBoostマクロは以前のバージョン、たとえば1.60.0がインストールされている場合は1.58.0を探している可能性があることを指摘したいだけです。ビルドしようとしているものからFindBoostマクロをポップして開き、そうであるかどうかを確認することをお勧めします。特定のバージョンを含めるように編集するだけです。 (これが私の問題でした。)

0
Ganta

Paul-gにアドバイスをありがとう。私の側では少し違いました。

次のステップ5に従ってBoostをインストールしました。 https://www.boost.org/doc/libs/1_59_0/more/getting_started/unix-variants.html

そして、/ usr/local/share/cmake-3.5/Modulesにある「FindBoos.cmake」にPATHディレクトリを追加します。

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)
0
Adrien Polidano