VTK版本问题
PCL依赖于VTK库,ubuntu20.04通过apt安装的VTK共有两种可选版本,一个是6.3,一个是7.1,这两个版本对PCL1.13来说都太老了。
于是去VTK官网上下载最新版本的VTK安装,目前官方最新版本是9.3.0.RC1,这是一个候选版本,下载编译安装过程略过不表。
安装完VTK库之后安装PCL,前面编译一切顺利,但是在outofcore模块编译时提示找不到vtkMutexLock.h。在VTK代码下搜索这个文件,果然没有找到。于是google一通,终于找到了该文件,在VTK 9.2.20220622版本的source里有这个文件,但是在VTK 9.2 20230601版本的source里就找不到这个文件了。
可以得出结论,PCL 1.13.0用的是9.2 20220622版本或者之前版本的VTK,其中vtkMutexLock.h这个头文件在后续的某次版本更新里被去掉了,因此用后面的版本编译会缺少文件。要安装成功的话要么重新装对应版本的VTK,要么在编译PCL的时候跳过outofcore这个模块。
为了确定PCL使用的VTK版本,下载了一个windows版本的PCL,安装之后查看3rdParty文件夹里的VTK版本。
windows下PCL的安装包自带的VTK为9.2,VTK官网不提供这个版本,需要访问VTK的git仓库来找对应版本的source code。
VTK的git仓库,可能要挂代理
git仓库里的9.2还有很多小版本,根据之前找到vtkMutexLock.h的时间在20220622,选择了一个时间差不多的版本9.2.0下载下来,卸载掉之前安装的9.3,安装9.2.0之后再次尝试编译PCL,经过漫长的等待。
编译成功!