Sto costruendo il mio programma C++ con cmake su un Mac. Il compilatore mi dà seguente errore:Perché non è incluso questo file di intestazione di boost
error: boost/filesystem.hpp: No such file or directory
La linea che fa scattare l'errore è il seguente:
#include "boost/filesystem.hpp"
o
#include <boost/filesystem.hpp>
Quale di quanto sopra che uso non ha cambiato il Errore
Ma nel mio CMakeLists.txt includo le intestazioni di boost nel modo seguente:
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 includono dirs è pieno di "/ opt/local/include /" durante il processo di CMake e questa cartella contiene una spinta cartella che contiene il filesystem.hpp
Boost dà i seguenti messaggi durante la generazione il Makefile, ho copiato solo la parte spinta:
-- 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
Durante l'esecuzione di rendere VERBOSE = 1 Questa riga contiene l'errore:
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
Capisci perché il compilatore non sta selezionando la directory/opt/local/include?
Se avete bisogno di ulteriori informazioni sono felice di fornire
Questo sembra, cosa dice "ls /opt/local/include/boost/filesystem.hpp"? –
assicurati che le variabili include_directory ($ {Boost_INCLUDE_DIRS}) siano elencate prima che siano state raggiunte le dichiarazioni add_executable o add_library. –
Grazie ... sembra essere d'aiuto ora ottengo un errore di boost in fase di compilazione. Ho aggiunto la sottodirectory con l'istruzione eseguibile prima dell'inclusione, non essendo consapevole che cmake applicherà in quel momento tutto in quella sottodirectory. Che ha risolto almeno questo problema – Janusz