Boost包含使用cmake找不到的标头

时间:2011-01-06 11:23:32

标签: boost cmake

这个问题与Why is this boost header file not included非常相似,但是这些提示并没有(似乎)解决了我的问题。

我有一个CMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(jetorigin)

SET(Boost_ADDITIONAL_VERSIONS "1.43" "1.43.0" "1.44" "1.44.0" "1.45" "1.45.0")
SET(BOOST_ROOT "$ENV{HOME}/usr")
MESSAGE(STATUS "** Search Boost root: ${BOOST_ROOT}")
FIND_PACKAGE(Boost 1.43 COMPONENTS filesystem regex REQUIRED)
 MESSAGE(STATUS "** Boost Include: ${Boost_INCLUDE_DIR}")
 MESSAGE(STATUS "** Boost Libraries: ${Boost_LIBRARY_DIRS}")
 MESSAGE(STATUS "** Boost Libraries: ${Boost_LIBRARIES}")

INCLUDE_DIRECTORIES(${BOOST_INCLUDE_DIR})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})

ADD_SUBDIRECTORY(src)

在我的代码中包含一些boost标题,如下所示:

#include <boost/regex.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>

现在cmake的输出看起来不错

-- ** Search Boost root: /home/oli/usr
-- Boost version: 1.43.0
-- Found the following Boost libraries:
--   filesystem
--   regex
-- ** Boost Include: /home/oli/usr/include
-- ** Boost Libraries: /home/oli/usr/lib
-- ** Boost Libraries: /home/oli/usr/lib/libboost_filesystem.so;/home/oli/usr/lib/libboost_regex.so

但是我收到了这个错误:

error: boost/regex.hpp: No such file or directory

(和其他类似的包括)。 make VERBOSE = 1的完整输出可以在http://pastebin.ca/2039425找到。即使Boost_INCLUDE_DIR似乎设置正确,看起来好像没有添加-I标志。

顺便说一句,我正在使用CMake 2.8.1。 我非常感谢任何关于这里出了什么问题的提示......


编辑: 我发现了这个问题。似乎我从我的档案深处抽取了我的标准CMakeLists.txt的一些古老版本。它必须是:

INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})

(注意非大写的“Boost”)...... 也许旧版本的CMake在这方面更加宽容,或者运气不好我只是选择从我的CMakeLists.txt版本开始,带有一个不修复的bug ..

0 个答案:

没有答案