2014-06-11 3 views
26

ich finden versucht, alles wie:CMake ist nicht in der Lage BOOST Bibliotheken

  1. konfigurieren Umgebungsvariable
  2. frisch Make build
  3. neu installieren BOOST von der Quelle
  4. sudo apt-get install libboost-all-dev

Aber immer noch folgende Fehler:

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-Bibliothek 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 diese Fehler zu lösen? Fehle ich etwas?

Edit:

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= 
+0

Können Sie die Ausgabe von CMake zeigen, wenn Sie 'cmake tun. -DBoost_DEBUG = Ein'? – Fraser

+0

@Fraser: http: //pastebin.com/cPRNegEi BTW meine Boost-Version ist 1_45_0 –

+2

Sieht aus wie es die Umgebungsvariablen nicht abgreift. Siehe Zeilen 8-10 Ihrer Ausgabe. Sie können versuchen, diese als CMake-Variablen zu übergeben. Vielleicht würde auch nur BOOST_ROOT reichen: 'cmake. -DBOOST_ROOT =/usr/local' – Fraser

Antwort

3

ich dies mit boost einzurichten von cmake in meinem CMakeLists.txt. Versuche etwas ähnliches (stelle sicher, dass du die Pfade zu deiner Boost-Installation aktualisierst). Diese

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) 

wird entweder Suchstandardpfade (/usr, /usr/local) oder der Weg durch die Cmake Variablen bereitgestellt (BOOST_ROOT, BOOST_INCLUDEDIR, BOOST_LIBRARYDIR). Es funktioniert für mich auf cmake> 2.6.

1

scheint die Antwort in den Kommentaren und als bearbeiten, aber dies für Sie zu klären, sollte 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}) 

müssen Sie die Argumente als Befehlszeilenargumente angeben, oder Sie können eine Toolchain-Datei für die Verwendung , aber cmake wird Ihre Umgebungsvariablen nicht berühren.

24

Versuche Cmake Prozess mit folgenden Libs abzuschließen:

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

Für mich fehlte libboost-all-dev und es half. – Zbyszek

+2

Ich auch das 'libboost-all-dev'-Paket löste das' - Konnte NICHT finden Boost' Cmake Problem, um nach Boost-System weit zu suchen. – loretoparisi

0

ich, dass das Makro für eine frühere Version suchen kann FindBoost nur darauf hinweisen will, zum Beispiel, 1.58.0, wenn Sie 1,60 haben könnten. 0 installiert. Ich empfehle das Öffnen des FindBoost-Makros von dem, was Sie gerade erstellen möchten, und prüfen, ob das der Fall ist. Sie können es einfach bearbeiten, um Ihre bestimmte Version einzuschließen. (Das war mein Problem.)