Укажите пользовательский каталог включения для библиотеки в rosmake (CMakeLists.txt)

0

Для проекта ROS мне нужен Boost 1.55, который в настоящее время несовместим для использования с ROS, поэтому я не могу установить его вместе с ROS. Поскольку компиляция ROS из источника не является вариантом, я хотел бы изменить каталог, в котором компилятор ищет Boost (вместо /usr/include/boost только мой собственный каталог).

Итак, если у меня есть #include<boost/somefile.hpp>, я бы хотел, чтобы он фактически включал [package_folder]/include/boost/somefile.hpp; и это, конечно же, также нужно для всех #include в самой библиотеке Boost. Есть ли простой способ сделать это (я думаю, что это должно быть сделано в файле CMakeLists.txt)

Вот то, что я пробовал (в том числе и то, что предложил @русло)

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

Итак, я перечислил все переменные cmake, которые указали на /usr/include/ и добавили мое местоположение 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 чтобы получить мой каталог?

  • 0
    set(BOOST_ROOT include/boost_1_55_0) вам нужно установить полный путь здесь
  • 0
    используйте find_package(Boost 1.55.0 REQUIRED) если boost является обязательной библиотекой
Теги:
cmake
boost
ros

2 ответа

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... узнал, что это трудный путь.

1

Просто измените переменную BOOST_ROOT:

cmake -DBOOST_ROOT =/ваш/boost/location... другие варианты...

  • 0
    Да, это не сработало. Я отредактирую свой вопрос, чтобы включить то, что я пытался

Ещё вопросы

Сообщество Overcoder
Наверх
Меню