Как включить заголовки библиотеки в CMakeLists

У меня проблемы с получением CMake и Make для поиска внешних заголовочных файлов, которые мне нужны для компиляции кода.

Мой код пытается использовать заголовок, предоставленный внешней библиотекой aruco

#include <aruco.h>

И когда я пытаюсь скомпилировать, я получаю

/home/ncr/ncr_ws/src/aruco_ros/src/aruco_ros_node.cpp:21:19: fatal error: aruco.h: No such file or directory
#include <aruco.h>
^
compilation terminated.

Мой CMakeLists.txt имеет:

cmake_minimum_required(VERSION 2.8.3)
project(aruco_ros)

set(CMAKE_MODULE_PATH /usr/local/lib/cmake)
message( STATUS "CMAKE_MODULE_PATH: " ${CMAKE_MODULE_PATH})
find_package(OpenCV REQUIRED)
find_package(aruco REQUIRED)
...
include_directories(
${OpenCV_INCLUDE_DIRS}
${aruco_INCLUDE_DIRS}
)
message(STATUS "OpenCV_INCLUDE_DIRS: " ${OpenCV_INCLUDE_DIRS})
message(STATUS "aruco_INCLUDE_DIRS: " ${aruco_INCLUDE_DIRS})

Findaruco.cmake файл находится в /usr/local/lib/cmake/Findaruco.cmake

Findaruco.cmake файл устанавливает aruco_INCLUDE_DIRS переменная как /usr/local/include и включаемый файл aruco.h в /usr/local/include/aruco, Разве make не выполняет поиск в подкаталогах? Большинство заголовков opencv находятся в /usr/local/include/opencv2 но OpenCV_INCLUDE_DIRS только заявляет /usr/local/include и все же все opencv заголовки находятся без проблем.

0

Решение

Как сказал Джеймс Адкисон, мне нужно было правильно сослаться на заголовочные файлы. Глядя на другие файлы включения opencv, я начинаю их все с #include <opencv2/[blah]>, который объясняет, почему те работают также.

1

Другие решения

Других решений пока нет …