У меня возникли проблемы с получением CMake и Make для поиска внешних файлов заголовков Мне нужно скомпилировать мой код.Как включить заголовки библиотеки в CMakeLists
Мой код пытается использовать заголовок предоставленный внешней библиотеки 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
. Не делает поиск в подкаталогах? Большинство заголовков opencv находятся в /usr/local/include/opencv2
, но OpenCV_INCLUDE_DIRS
только объявляет /usr/local/include
, и все же все opencv заголовки найдены без проблем.
Вам нужно '#include'. Если вы не хотите указывать подкаталог, добавьте его в путь, используемый в 'include_directories'. –
Спасибо! Так как вы ответили в комментарии, есть ли способ повысить или увеличить репутацию или что-то еще? – Anup
Лично я бы рекомендовал вам не добавлять подкаталог в путь и указать подкаталог при выполнении include. Мне нравится контекст, который он дает об источнике, связанном с заголовком (также помогает избежать проблем, если заголовки называются одинаковыми). –