J'essaie de configurer un projet à l'aide de CMake, mais il ne parvient pas à trouver les bibliothèques Boost, même si elles se trouvent dans le dossier spécifié. J'ai spécifié Boost_INCLUDE_DIR, Boost_LIBRARYDIR et BOOST_ROOT, mais j'obtiens toujours une erreur disant que CMake n'est pas en mesure de trouver Boost. Quelle pourrait être la raison d'une telle erreur?
Réponses
Trop de publicités?Êtes-vous sûr de le faire correctement? L'idée est que CMake configure automatiquement BOOST_INCLUDE_DIR, BOOST_LIBRARYDIR et BOOST_ROOT. Faites quelque chose comme ceci dans CMakeLists.txt:
FIND_PACKAGE(Boost)
IF (Boost_FOUND)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
ADD_DEFINITIONS( "-DHAS_BOOST" )
ENDIF()
Si boost n'est pas installé dans un emplacement par défaut et ne peut donc pas être trouvé par cmake, vous pouvez indiquer à cmake où chercher boost comme ceci:
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/win32libs/boost")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:/win32libs/boost/lib")
bien entendu, ces deux lignes doivent se trouver avant FIND_PACKAGE (Boost) dans CMakeLists.txt
Il n'y a plus que l'aide offerte par la lecture de la FindBoost.cmake fichier lui-même. Il est situé dans votre 'Modules' annuaire.
Une bonne façon de commencer est de définir(Boost_DEBUG 1) - cela va cracher une bonne quantité d'informations sur l'endroit où boost est à la recherche, ce qu'il cherche, et peut aider à expliquer pourquoi il ne peut pas le trouver.
Il peut également vous aider à déterminer si c'est de ramasser sur votre BOOST_ROOT correctement.
FindBoost.cmake aussi parfois des problèmes si la version exacte de boost n'est pas répertorié dans les Versions Disponibles des variables. Vous pouvez trouver plus sur ce sujet par la lecture de FindBoost.cmake
Enfin, FindBoost.cmake a eu quelques bugs dans le passé. Une chose que vous pouvez essayer est de prendre une version plus récente de FindBoost.cmake de la dernière version de cmake, et de le coller dans votre dossier de projet aux côtés de CMakeLists.txt - alors, même si vous avez une vieille version de boost, il va utiliser la nouvelle version de FindBoost.cmake qui est dans votre dossier.
Bonne chance.
Encore un conseil pour ceux qui essaient de construire CGAL en particulier, avec Boost statiquement lié. Il ne suffit pas de définir Boost_USE_STATIC_LIBS
; il est remplacé par le temps Boost_DEBUG
affiche sa valeur. La chose à faire ici est de cocher la case "Avancé" et d'activer CGAL_Boost_USE_STATIC_LIBS
.