对于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
获取我的目录?
答案 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
......学到了很难的方法。