J'ai la dernière version de cmake 3.0.2 compilée à partir de sources, également installées avec libboost-all-dev. Et find_package (Boost) ne le trouve pas. Voici la sortie de cmake:
Unable to find the requested Boost libraries.
Unable to find the Boost header files. Please set BOOST_ROOT to the root
directory containing Boost of BOOST_INCLUDEDIR to the directory containing
Boost's headers.
Dois-je définir manuellement des variables après l'installation de Boost pour les rendre visibles pour cmake?
Merci.
Quelle version de libboost-all-dev
utilisez-vous? Je suppose que vous utilisez la version 1.53.0.
Essayez d'installer libboost1.54-all-dev
à la place.
Merci, Rohith.
Comme solution alternative, j'ai téléchargé et construit la dernière version de boost et ajouté la variable BOOST_ROOT dans ~/.profile comme ceci:
export BOOST_ROOT=$HOME/work/boost_1_57_0
Notez que ce boost doit être construit si vous utilisez ses bibliothèques non-header.
Dans 14.04 (et probablement plus tôt) à 16.04, je pourrais utiliser ces:
find_package( Boost COMPONENTS filesystem system REQUIRED )
include_directories(
${BOOST_INCLUDE_DIRS}
)
target_link_libraries(${PROJECT_NAME}
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
}
Si vous n'avez besoin que des en-têtes, vous n'avez pas besoin de spécifier de composant ni de target_link_libraries()
:
find_package( Boost REQUIRED )
include_directories(
${BOOST_INCLUDE_DIRS}
)
Avec 16.10, je devais m'assurer d'installer libboost-all-dev
pour que mon code continue à être compilé sur Ubuntu.
Sudo apt-get install libboost-all-dev
Les versions précédentes fonctionnaient avec seulement libboost-dev
, en quelque sorte. Bien que vous ayez déjà compris cette partie, je voulais simplement m'assurer qu'il était clairement indiqué qu'il y avait eu un changement récent à cet égard.
Je rencontre aussi une telle situation délicate à Ubuntu ...
Ma solution consiste simplement à ne pas utiliser find_package
mais à ajouter les bibliothèques dans le processus de lien.
target_link_libraries( your_program boost_system boost_filesystem ... )
Le problème, c’est que cmake
ne peut pas examiner l’existence de la bibliothèque boost
. Cependant, cela fonctionne simplement.
J'espère que quelqu'un pourra trouver une meilleure solution.