【问题标题】:Specify custom include directory for library in rosmake (CMakeLists.txt)在 rosmake (CMakeLists.txt) 中为库指定自定义包含目录
【发布时间】:2014-06-06 13:19:49
【问题描述】:

对于一个 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/ 的 cmake 变量并附加了我的 Boost 位置:

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 获取我的目录?

【问题讨论】:

  • set(BOOST_ROOT include/boost_1_55_0)这里需要设置完整路径
  • 如果 boost 是强制库,则使用 find_package(Boost 1.55.0 REQUIRED)

标签: c++ boost cmake ros


【解决方案1】:

只需更改BOOST_ROOT 变量:

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

【讨论】:

  • 是的,那没用。我将编辑我的问题以包含我尝试过的内容
【解决方案2】:

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

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

include_directories(${PROJECT_SOURCE_DIR}/include/boost_1_55_0)

这显然是我之前尝试过的,但由于“脏”的构建目录而没有奏效。所以,请始终使用rosmake yourpackage --target=clean... 学到了这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 2020-03-19
    • 2013-09-17
    • 2014-09-24
    • 2016-04-09
    相关资源
    最近更新 更多