【发布时间】:2010-11-07 02:12:44
【问题描述】:
我正在 Mac 上使用 cmake 构建我的 c++ 程序。编译器给了我以下错误:
error: boost/filesystem.hpp: No such file or directory
触发错误的行如下:
#include "boost/filesystem.hpp"
或
#include <boost/filesystem.hpp>
以上我使用的哪个没有改变错误
但在我的 CMakeLists.txt 中,我通过以下方式包含了 boost 标头:
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})
在 cmake 过程中,Boost 包含目录被“/opt/local/include/”填充,这个文件夹包含一个文件夹 boost,其中包含 filesystem.hpp
Boost 在生成 Makefile 时给出以下消息,我只复制了 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
运行时 make VERBOSE=1 这行包含错误:
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:错误:boost/filesystem.hpp:没有这样的文件或目录 make[2]: *** [src/CMakeFiles/ImageMarker.dir/FaceRecognizer.cpp.o] 错误 1你明白为什么编译器没有选择 /opt/local/include 目录吗?
如果您需要更多信息,我很乐意提供
【问题讨论】:
-
这看起来不错,“ls /opt/local/include/boost/filesystem.hpp”怎么说?
-
确保在 到达任何 add_executable 或 add_library 语句之前列出了 include_directories(${Boost_INCLUDE_DIRS})。
-
谢谢...这似乎有助于我在编译时遇到 boost 错误。我在包含之前添加了带有可执行语句的子目录,不知道cmake 会在那个时候应用该子目录中的所有内容。至少解决了这个问题
标签: c++ boost cmake compilation