Построение библиотеки точек облака (PCL) в macOS X Ошибка Mojave: ld: библиотека не найдена для -lflann - PullRequest
0 голосов
/ 14 декабря 2018

Я следую куче руководств по установке PCL ... Я получаю следующую ошибку:

ld: library not found for -lflann

Я установил pcl с использованием brew install pcl.Вот мой CMakeList.txt

set(PCL_DIR "/usr/local/Cellar/pcl/1.9.1/share/pcl-1.9/")

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)

project(pcd_write)

set(PCL_DIR "/usr/local/Cellar/pcl/1.9.1/share/pcl-1.9/") 
find_package(PCL 1.9 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

add_executable (pcd_write pcd_write.cpp)
target_link_libraries (pcd_write ${PCL_LIBRARIES})

cmake работает нормально и создает Makefile.При запуске make я получаю:

[ 50%] Linking CXX executable pcd_write
ld: library not found for -lflann
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [pcd_write] Error 1
make[1]: *** [CMakeFiles/pcd_write.dir/all] Error 2
make: *** [all] Error 2

Существует ли обновленное, полное руководство по установке PCL на MacOS Mojave?Спасибо ..!

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Возможно, лучший способ решить эту проблему - скачать pcl и скомпилировать его самостоятельно.Кажется, что pcl (1.9.1_4) от brew имеет неправильные ссылки на FLANN (1.9.1_7)

В любом случае мы можем взломать это ..., изменив файл FindFLANN.cmake в '/usr/local/Cellar/pcl/1.9.1_4/share/pcl-1.9/Modules'

В начале файла добавить:

set(FLANN_LIBRARIES /usr/local/Cellar/flann/1.9.1_7/lib/libflann.dylib /usr/local/Cellar/flann/1.9.1_7/lib/libflann_cpp.dylib)
set(FLANN_FOUND TRUE)

Hopeэто поможет, если вы боретесь за сборку ROS на Mac:)

0 голосов
/ 04 января 2019

У меня та же проблема (при сборке pcl как части ROS Kinetic на macOS Mojave).Мой обходной путь открывал link.txt во всех соответствующих подпапках CMakeFiles и делал следующие замены:

  1. Замена -lflann на /usr/local/lib/libflann.dylib
  2. Замена -lflann_cpp на /usr/local/lib/libflann_cpp.dylib

Обратите внимание, что это может происходить несколько раз в некоторых файлах.Поскольку я использую catkin для всего процесса сборки, мое расположение этих файлов, вероятно, будет немного отличаться от вашего.

Это решение, по общему признанию, очень хакерское, и я уверен, что есть более правильный способ сделать этоно он сделал сборку.

...