Я хочу интегрировать 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 с этим вызовом компиляции. Я добавил это, и это работает!