c++ CMake n'est pas en mesure de trouver des bibliothèques BOOST




bash (4)

J'ai tout essayé comme:

  1. Configurer la variable d'environnement
  2. Faire une nouvelle construction
  3. Réinstallez BOOST depuis la source
  4. sudo apt-get install libboost-all-dev

Mais toujours en train de suivre les erreurs:

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 de boost: /usr/local/src/boost_1_45_0 Boost Chemin de la bibliothèque: /usr/local/lib Fichier d'en-tête Boost: /usr/local/include/boost

Voici le 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=

semble que la réponse se trouve dans les commentaires et sous forme de 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 en tant qu'arguments de ligne de commande ou vous pouvez utiliser un fichier de chaîne d'outils pour cela, mais cmake ne touchera pas vos variables d'environnement.


Je veux juste faire remarquer que la macro FindBoost peut rechercher une version antérieure, par exemple, 1.58.0 lorsque vous pourriez avoir installé 1.60.0. Je suggère d'ouvrir la macro FindBoost à partir de ce que vous essayez de construire 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.)


J'utilise cela pour configurer boost à partir 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)

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


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

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