macOS X Mojave上的建筑点云库(PCL)错误:ld:-lflann找不到库

时间:2018-12-14 08:49:52

标签: c++ makefile graphics cmake flann

我正在跟踪一堆教程来安装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

是否有更新的权威指南在MacOS Mojave上安装PCL?谢谢..!

3 个答案:

答案 0 :(得分:0)

我有同样的问题(在ma​​cOS Mojave上将pcl作为ROS Kinetic的一部分构建时)。我的解决方法是在CMakeFiles的所有相关子文件夹中打开link.txt并进行以下替换:

  1. -lflann代替/usr/local/lib/libflann.dylib
  2. -lflann_cpp代替/usr/local/lib/libflann_cpp.dylib

请注意,这些可能在某些文件中多次出现。当我在整个构建过程中使用catkin时,这些文件的位置可能与您的略有不同。

该解决方案无疑是非常棘手的,我敢肯定有一种更合适的方法可以做到这一点,但是它使构建工作得以实现。

答案 1 :(得分:0)

也许解决此问题的最佳方法是下载pcl并自行编译。似乎来自brew的pcl(1.9.1_4)与FLANN(1.9.1_7)的链接有误

无论如何,我们可以通过修改'/ usr / local / Cellar / pcl / 1.9.1_4 / share / pcl-1.9 / Modules'中的 FindFLANN.cmake 文件来破解此文件...

在文件的开头,添加:

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)

如果您正在为在Mac上构建ROS而奋斗,希望这会有所帮助:)

答案 2 :(得分:0)

我在Mojave 10.14

上执行了以下步骤,从而成功构建了该文件
  • 第1步
brew install boost

brew install eigen

brew install flann

brew install vtk
  • 第2步
git clone https://github.com/PointCloudLibrary/pcl.git

mkdir BUILD

cd BUILD

cmake ..

make

sudo make install