CMake 找到了 Boost 但 Make 找不到包含文件

3 c++ boost makefile cmake

我目前在使用 Boost 时遇到问题。在CMake阶段,它清楚地说明发现了boost:

-- Boost version: 1.61.0
-- Found the following Boost libraries:
--   filesystem
--   program_options
--   iostreams
--   timer
--   system
--   regex
Run Code Online (Sandbox Code Playgroud)

但是在make从生成的阶段中Makefile

Timer.h(26): catastrophic error: cannot open source file "boost/timer/timer.hpp"
  #include <boost/timer/timer.hpp>
[..]                                  ^

Function.h(29): catastrophic error: cannot open source file "boost/ptr_container/ptr_map.hpp"
  #include <boost/ptr_container/ptr_map.hpp>
[..]
Run Code Online (Sandbox Code Playgroud)

基本上,似乎没有Makefile找到boost. 我什至去声明Boost_INCLUDEDIR并且Boost_LIBRARYDIR- 区分大小写。看起来没有帮助。

可能的原因是什么?会不会是编译器,即gcc/icccmake生成器之间的一些冲突?(纯猜测 - 我在这方面不专业......)

编辑:这是boostCMakeLists.txt文件中查找的过程:http : //pastebin.com/7m3yAYk5FindBOOST.cmake这里是:https : //github.com/Kitware/CMake/blob/master/Modules/FindBoost.cmake

Cin*_*its 6

找到一个库并包含它是两件不同的事情。

您不仅需要找到Boost,还需要包含它的标头和指向其库的链接。一个简单的 CMakeLists.txt 示例:

FIND_PACKAGE( Boost 1.61 COMPONENTS filesystem program_options iostreams timer REQUIRED )
INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIR} )

ADD_EXECUTABLE( myProgram myMain.cpp )

TARGET_LINK_LIBRARIES( myProgram ${Boost_LIBRARIES} )
Run Code Online (Sandbox Code Playgroud)

如果您已经这样做了,请更新您的问题以包含该信息。