it-swarm.com.de

CMake kann keine BOOST-Bibliotheken finden

Ich habe alles versucht wie: 

  1. Umgebungsvariable konfigurieren 
  2. Frisch bauen
  3. Installieren Sie BOOST erneut von der Quelle 
  4. Sudo apt-get install libboost-all-dev

Aber immer noch folgende Fehler bekommen:

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.

Quellcode-Verzeichnis für boost: /usr/local/src/boost_1_45_0 Boost Library-Pfad: /usr/local/lib Boost-Header-Datei: /usr/local/include/boost

Hier ist 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"

Wie löse ich diese Fehler? Verpasse ich etwas

Bearbeiten:

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=
35
Amit Pal

Versuchen Sie, den cmake-Prozess mit den folgenden Libs abzuschließen:

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

Ich verwende dies, um den Boost von cmake in meinem CMakeLists.txt einzurichten. Versuchen Sie etwas Ähnliches (stellen Sie sicher, dass Sie die Pfade zu Ihrer Boost-Installation aktualisieren).

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)

Dabei werden entweder Standardpfade (/usr, /usr/local) oder der durch die cmake-Variablen (BOOST_ROOT, BOOST_INCLUDEDIR, BOOST_LIBRARYDIR) bereitgestellte Pfad durchsucht. Es funktioniert für mich auf cmake> 2.6.

8
paul-g

anscheinend ist die Antwort in den Kommentaren und als Bearbeitung, aber zur Klarstellung sollte dies für Sie funktionieren:

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

sie müssen die Argumente als Befehlszeilenargumente angeben oder Sie können dafür eine Toolchain-Datei verwenden, aber cmake berührt Ihre Umgebungsvariablen nicht.

1
Alex

Fügen Sie der cmake-Befehlszeile -DBoost_DEBUG=TRUE hinzu, um zu sehen, wo das Makro FindBoost sucht.

0
Andrew Marshall

Ich hatte das gleiche Problem in einem Alpine Docker-Container. Meine Lösung bestand darin, die boost-dev apk-Bibliothek hinzuzufügen, da libboost-dev nicht verfügbar war.

0

Lange Antwort zu kurz, wenn Sie Boost in benutzerdefinierten Pfad installieren, müssen alle Header-Dateien in $ {Pfad}/Boost /.

wenn Sie wissen möchten, warum cmake die angeforderten Boost-Bibliotheken nicht finden kann, nachdem Sie BOOST_ROOT/BOOST_INCLUDEDIR eingestellt haben, können Sie cmake install location path_to_cmake/share/cmake-xxx/Modules/FindBoost aktivieren.

cmake, das Boost_INCLUDE_DIR in boost/config.hpp in BOOST_ROOT findet. Das bedeutet, dass Ihre Boost-Header-Datei ${path}/boost/ Haben muss. Jedes andere Format (z. B. ${path}/boost-x.y.z) Ist für find_package In CMakeLists.txt nicht geeignet.

0
sniper lin

Ich möchte nur darauf hinweisen, dass das FindBoost-Makro möglicherweise nach einer früheren Version sucht, beispielsweise 1.58.0, wenn Sie 1.60.0 installiert haben. Ich empfehle, das FindBoost-Makro von dem zu öffnen, was Sie erstellen möchten, und zu prüfen, ob dies der Fall ist. Sie können es einfach bearbeiten, um Ihre bestimmte Version aufzunehmen. (Dies war mein Problem.)

0
Ganta

Vielen Dank an Paul-g für Ihre Beratung. Für meinen Teil war es etwas anders. 

Ich habe Boost installiert, indem ich den folgenden Schritt 5 befolgte: https://www.boost.org/doc/libs/1_59_0/more/getting_started/unix-variants.html

Und dann füge ich das PATH-Verzeichnis in "FindBoos.cmake" hinzu, das sich in /usr/local/share/cmake-3.5/Modules befindet:

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

Ich habe die gleiche Fehlermeldung erhalten, als ich LightGBM zum ersten Mal auf Python (GPU-Version) installieren wollte.

Sie können es einfach mit dieser Befehlszeile beheben: 

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

die Boost-Bibliotheken werden installiert und Sie können den Installationsprozess fortsetzen. 

0
CHAMI Soufiane