Ich baue mein C++ Programm mit cmake auf einem Mac. Der Compiler gibt mir folgende Fehler:Warum ist diese Boost-Header-Datei nicht enthalten
error: boost/filesystem.hpp: No such file or directory
Die Linie, die den Fehler auslöst, ist die folgende:
#include "boost/filesystem.hpp"
oder
#include <boost/filesystem.hpp>
Welche der oben Ich benutze nicht verändert nicht die Fehler
Aber in meiner CMakeLists.txt schließe ich die Boost-Header in der folgenden Weise:
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 umfassen dirs mit "/ opt/local/include /" gefüllt ist, während der Cmake Prozess und dieser Ordner enthält einen Ordner Schub, der die filesystem.hpp enthält
-Boost folgende Meldungen gibt beim Generieren das Makefile, ich kopiert nur die Boost-Teil:
-- 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
Während VERBOSE = 1 diese Zeile machen laufen enthält den Fehler:
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
Verstehen Sie, warum der Compiler das Verzeichnis/opt/local/include nicht auswählt?
Wenn Sie weitere Informationen benötigen, bin ich glücklich, es zu bieten
Das sieht gut aus, was sagt "ls /opt/local/include/boost/filesystem.hpp"? –
Stellen Sie sicher, dass die include_directories ($ {Boost_INCLUDE_DIRS}) aufgelistet sind, bevor alle add_executable- oder add_library-Anweisungen erreicht werden. –
Danke ... das scheint mir jetzt zu helfen, bekomme ich einen Boost-Fehler zur Kompilierzeit. Ich habe das Unterverzeichnis mit der ausführbaren Anweisung vor dem Include hinzugefügt, ohne zu wissen, dass cmake in diesem Moment alles in diesem Unterverzeichnis anwenden wird. Das löste zumindest dieses Problem – Janusz