2015-10-21 3 views
0

У меня возникли проблемы с получением 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 заголовки найдены без проблем.

+0

Вам нужно '#include '. Если вы не хотите указывать подкаталог, добавьте его в путь, используемый в 'include_directories'. –

+0

Спасибо! Так как вы ответили в комментарии, есть ли способ повысить или увеличить репутацию или что-то еще? – Anup

+0

Лично я бы рекомендовал вам не добавлять подкаталог в путь и указать подкаталог при выполнении include. Мне нравится контекст, который он дает об источнике, связанном с заголовком (также помогает избежать проблем, если заголовки называются одинаковыми). –

ответ

1

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

+0

Там вы идете, это работает. Ответьте на свой вопрос и примите его. :) Если бы я хотел получить репутацию, я бы дал ответ. –

Смежные вопросы