Je construis mon programme C++ avec cmake sur un Mac. Le compilateur me donne l'erreur suivante:Pourquoi ce fichier d'en-tête boost n'est pas inclus
error: boost/filesystem.hpp: No such file or directory
La ligne qui déclenche l'erreur est la suivante:
#include "boost/filesystem.hpp"
ou
#include <boost/filesystem.hpp>
Lequel de ce qui précède, je ne l'utilise pas changé le Erreur
Mais dans mon CMakeLists.txt j'inclus les en-têtes boost de la façon suivante:
FIND_PACKAGE(Boost)
MESSAGE("Boost information:")
MESSAGE(" Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}")
MESSAGE(" Boost_LIBRARIES: ${Boost_LIBRARIES}")
MESSAGE(" Boost_LIBRARY_DIRS: ${Boost_LIBRARY_DIRS}")
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
Boost comprennent dirs est rempli avec "/ opt/local/include /" au cours du processus de CMake et ce dossier contient un coup de pouce du dossier qui contient le filesystem.hpp
Boost donne les messages suivants tout en générant le Makefile, je ne copiais la partie boost:
-- Boost version: 1.38.0
-- Found the following Boost libraries:
Boost information:
Boost_INCLUDE_DIRS: /opt/local/include
Boost_LIBRARIES:
Boost_LIBRARY_DIRS: /opt/local/lib
-- Configuring done
Pendant l'exécution de faire verbose = 1 Cette ligne contient l'erreur:
cd /Users/janusz/Documents/workspace/ImageMarker/Debug/src && /usr/bin/c++ -O3 -Wall -Wno-deprecated -g -verbose -I/Users/janusz/Documents/workspace/ImageMarker/src/. -o CMakeFiles/ImageMarker.dir/FaceRecognizer.cpp.o -c /Users/janusz/Documents/workspace/ImageMarker/src/FaceRecognizer.cpp /Users/janusz/Documents/workspace/ImageMarker/src/FaceRecognizer.cpp:8:32: error: boost/filesystem.hpp: No such file or directory make[2]: *** [src/CMakeFiles/ImageMarker.dir/FaceRecognizer.cpp.o] Error 1
Comprenez-vous pourquoi le compilateur ne choisit pas le répertoire/opt/local/include?
Si vous avez besoin de plus amples informations, je suis heureux de fournir
Cela semble bien, que dit "ls /opt/local/include/boost/filesystem.hpp"? –
Assurez-vous que le répertoire include_directories ($ {Boost_INCLUDE_DIRS}) est répertorié _avant_les instructions add_executable ou add_library sont atteintes. –
Merci ... cela semble aider maintenant, je reçois une erreur de boost au moment de la compilation. J'ai ajouté le sous-répertoire avec l'instruction exécutable avant l'include, sans savoir que cmake va à ce moment tout appliquer dans ce sous-répertoire. Cela a résolu ce problème au moins – Janusz