Как я могу включить pcl в мой заголовочный файл, не выдавая «Нет такого файла или ошибки каталога»? - PullRequest
0 голосов
/ 03 июля 2019

Я хочу интегрировать pcl в некоторый код, который я унаследовал. Однако, если я не включу pcl-включения в основной cpp-файл, компилятор не может найти библиотеку и возвращает «Нет такого файла или каталога» в ответ на включаемые файлы. Это похоже на проблему с ссылками, но я не совсем уверен. Я использую Ubuntu 16.04, если это имеет значение.

Я переместил операторы include в cpp и вызвал библиотеки в pcl, и все работает нормально. Тем не менее, я действительно хочу иметь включения в заголовке, чтобы я мог объявить класс pointcloud и тому подобное. Когда я вообще перемещаю включения в заголовочный файл, я получаю сообщение об ошибке «Нет такого файла или каталога». Если я пытаюсь включить include в файл cpp, то объявляю в заголовке, я получаю «pcl не называет тип». Я также попытался включить include как #include, но затем, когда заголовок вызывает foo.h, первое включение в foo.h генерирует ошибку «Нет такого файла или каталога», и мне снова становится грустно. В файле make я включил пути для pcl и eigen. Я также попытался скомпилировать с заголовком, и это не сработало. Ниже мой Makefile.

CAS_DIR := payloads/CAS
CAS_INCLUDES    += -I/usr/local/include  -I. 

SENSOR_INCLUDES := -I/usr/local/include/pcl-1.8
SENSOR_INCLUDES += -I/usr/local/include/eigen3

LDLIBS      += -L/usr/local/lib -L. -L/usr/local/include 
LDFLAGS     += -lipcx -lmemx -lzmq -lrt -lusb-1.0 -ldl -pthread -lboost_system

sensor.o: $(CAS_DIR)/sensor.cpp
    $(CXX) $(CXXFLAGS) -c $< $(CAS_INCLUDES) $(SENSOR_INCLUDES)

CAS_exec.o: $(CAS_DIR)/CAS_exec.cpp
    $(CXX) $(CXXFLAGS) -c $< $(CAS_INCLUDES)

Итак, в заключение, я действительно хочу иметь возможность компилировать все мои pcl, включенные в заголовочный файл, или, по крайней мере, те, которые мне нужны для объявления вещей класса. Сейчас компилятору это совсем не нравится. Я полагаю, что это какая-то ошибка при связывании, но у меня нет опыта, чтобы действительно понять это. Если любой другой код будет полезен, пожалуйста, дайте мне знать! Спасибо за любую помощь, вы можете предоставить!

EDIT: Я понял. Таким образом, CAS_exec вызывал файл sensor.h, но не получал пути к pcl и eigen3 с этим вызовом компиляции. Я добавил это, и это работает!

...