指定不同版本的pcl

18.04里面安装了两个版本的pcl,一个是安装ros的时候安装的pcl1.8,另一个是安装的源码pcl1.12版本。一直相安无事,今天在我编译lego-loam的时候,突然就冲突了。卡了我两个小时,到处找原因,网上基本上没有相似的错误。最后在github的issue里面在到了一个类似的:

Cmake not working · Issue #165 · RobustFieldAutonomyLab/LeGO-LOAM · GitHub

应该是共享库冲突,就是说ros原装的pcl1.8和我后来安装的源码版本的pcl1.12冲突了。

指定不同版本的pcl_第1张图片

 知道是什么错误就好处理了。

然后就指定了ros版本的pcl1.8,之后就成功catkin_make -j1了。

指定不同版本的pcl_第2张图片

 下面来记录一下怎么指定不同版本pcl,所有的操作只用在CMakeLists.txt中完成:

1.指定ros安装版本的pcl

set(PCL_DIR "/usr/lib/x86_64-linux-gnu/cmake/pcl")
find_package(PCL  1.8 REQUIRED QUIET)
message("pcl_direction: " ${PCL_DIR}  )
message("pcl_include_direction: " ${PCL_INCLUDE_DIRS}  )

在CMakeLists.txt中就这样修改就可以了,可以观察下message输出:

 可以看到pcl_include_direction:中 /usr/include/pcl-1.8放到了第一个。

2.指定源码安装的pcl1.12版本

set(PCL_DIR "/usr/local/include/pcl-1.12")
find_package(PCL 1.12 REQUIRED)
message("pcl_direction: " ${PCL_DIR}  )
message("pcl_include_direction: " ${PCL_INCLUDE_DIRS}  )

message输出:

 /usr/local/include/pcl-1.12排到了首位。

比较容易,记录一下,免得以后碰到类似的问题,找记录就好。

你可能感兴趣的:(pcl相关,ubuntu,机器人)