在rosmake中指定库的自定义包含目录(CMakeLists.txt)

时间:2014-06-06 13:19:49

标签: c++ boost cmake ros

对于ROS项目,我需要Boost 1.55,它目前与ROS不兼容,所以我不能将其与ROS一起安装。由于从源代码编译ROS不是一个选项,我想更改编译器查找Boost的目录(而不是/usr/include/boost只是我自己的目录。)

所以,如果我有#include<boost/somefile.hpp>,我希望它实际上包括[package_folder]/include/boost/somefile.hpp;当然,这也必须适用于Boost库本身的所有#include。有没有一种简单的方法(我认为应该在CMakeLists.txt文件中完成)

这是我尝试的内容(包括@ruslo建议的内容)

set(BOOST_ROOT include/boost_1_55_0)
find_package(Boost 1.55.0)

提升状态变量表明进展顺利,但我仍然得到

fatal error: boost/graph/successive_shortest_path_nonnegative_weights.hpp: No such file or directory

所以,我列出了所有指向/usr/include/并附加了我的Boost位置的cmake变量:

set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES ${PROJECT_SOURCE_DIR}/include;/usr/include)
set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES ${PROJECT_SOURCE_DIR}/include;/usr/include)
set(GTEST_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include;/usr/include)

但无济于事。如何让rosmake获取我的目录?

2 个答案:

答案 0 :(得分:1)

只需更改BOOST_ROOT变量:

  

cmake -DBOOST_ROOT = / your / boost / location ...其他选项...

答案 1 :(得分:0)

答案很简单。在CMakeLists.txt中添加:

rosbuild_add_compile_flags(SingleImage "-std=c++0x")

include_directories(${PROJECT_SOURCE_DIR}/include/boost_1_55_0)

这显然是我之前尝试过的,但由于'脏'构建目录而无法正常工作。所以,总是使用rosmake yourpackage --target=clean ......学到了很难的方法。