web-dev-qa-db-fra.com

CMake n'est pas capable de trouver les librairies BOOST

J'ai tout essayé comme: 

  1. Configurer la variable d'environnement 
  2. Faire frais construire
  3. Réinstallez BOOST à ​​partir de la source 
  4. Sudo apt-get install libboost-all-dev

Mais toujours avoir les erreurs suivantes:

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.

Répertoire de code source pour boost: /usr/local/src/boost_1_45_0 Chemin de la bibliothèque de boost: /usr/local/lib Fichier d'en-tête de boost: /usr/local/include/boost

Voici 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"

Comment résoudre ces erreurs? Est-ce que je manque quelque chose?

Modifier:

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

Essayez de terminer le processus cmake avec les bibliothèques suivantes:

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

J'utilise ceci pour configurer boost de cmake dans mon CMakeLists.txt. Essayez quelque chose de similaire (assurez-vous de mettre à jour les chemins d'accès à votre installation de 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)

Ceci recherchera soit les chemins par défaut (/usr, /usr/local), soit le chemin fourni via les variables cmake (BOOST_ROOT, BOOST_INCLUDEDIR, BOOST_LIBRARYDIR). Cela fonctionne pour moi sur cmake> 2.6.

8
paul-g

il semble que la réponse se trouve dans les commentaires et en tant que modification, mais pour clarifier cela devrait fonctionner pour vous:

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

vous devez spécifier les arguments sous forme d'arguments de ligne de commande ou vous pouvez utiliser un fichier d'outils pour cela, mais cmake ne touchera pas vos variables d'environnement.

1
Alex

Essayez d’ajouter -DBoost_DEBUG=TRUE à votre ligne de commande cmake pour voir où la macro FindBoost effectue une recherche.

0
Andrew Marshall

Je tiens simplement à souligner que la macro FindBoost recherche peut-être une version antérieure, par exemple la 1.58.0 alors que la version 1.60.0 est installée. Je suggère d'ouvrir la macro FindBoost à partir de tout ce que vous essayez de créer et de vérifier si c'est le cas. Vous pouvez simplement le modifier pour inclure votre version particulière. (C'était mon problème.)

0
Ganta

Merci Paul-g pour vos conseils. Pour ma part c'était un peu différent. 

J'ai installé Boost en suivant l'étape 5 suivante: https://www.boost.org/doc/libs/1_59_0/more/getting_started/unix-variants.html

Et puis j'ajoute le répertoire PATH dans "FindBoos.cmake", situé dans /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)
0
Adrien Polidano

J'ai eu la même erreur la première fois que je voulais installer LightGBM sur Python (version GPU).

Vous pouvez simplement le réparer avec cette ligne de commande: 

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

les librairies boost seront installées et vous pourrez continuer votre processus d'installation. 

0
CHAMI Soufiane