我目前在使用 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/icc和cmake生成器之间的一些冲突?(纯猜测 - 我在这方面不专业......)
编辑:这是boost在CMakeLists.txt文件中查找的过程:http : //pastebin.com/7m3yAYk5,FindBOOST.cmake这里是:https : //github.com/Kitware/CMake/blob/master/Modules/FindBoost.cmake
找到一个库并包含它是两件不同的事情。
您不仅需要找到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)
如果您已经这样做了,请更新您的问题以包含该信息。
| 归档时间: |
|
| 查看次数: |
2308 次 |
| 最近记录: |