cmake在linux上找不到boost标头

时间:2015-08-17 13:35:53

标签: c++ linux boost cmake

Boost标头文件位于/usr/include/boost

CMakeLists.txt我添加了include_directories

的文件夹
include_directories(/usr/include /usr/include/boost/  
/usr/include/boost/smart_ptr)

但是,cmake坚持不查找头文件。问题出现在intrusive_ptr.hpp中,其中包括#include <boost/smart_ptr/intrusive_ptr.hpp

boost/smart_ptr/intrusive_ptr.hpp: No such file or directory
/usr/include/boost/intrusive_ptr.hpp

我的猜测是它不喜欢boost/smart_ptr/前缀。

所以,include_directories无效。

CMake错误:

CMake Error at /usr/local/share/cmake-3.3/Modules/FindBoost.cmake:1245   
(message):
Unable to find the requested Boost libraries.

Unable to find the Boost header files.  Please set BOOST_ROOT to the root
directory containing Boost or BOOST_INCLUDEDIR to the directory containing
Boost's headers.

我该怎么办?

感谢。

2 个答案:

答案 0 :(得分:1)

虽然我不知道您的案例有哪些失败,但我建议您只使用find_package与所包含的FindBoost.cmake文件:

find_package(Boost REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})

完成

答案 1 :(得分:0)

我认为您使用的是3.3 cmake版本,它支持target_include_directories。

即使target_link_library应该在这里提供帮助,如果我们链接库,也可以免费提供包含路径。

How do you add boost libraries in CMakeLists.txt