前言
PCL1.8.1安装包有编译好的VTK库,那为什么还要单独安装VTK呢?是由于预编译的vtk包并没有和qt进行编译得到QVTKWidget控件(该控件用来在qt上进行显示点云),因此需要下载VTK-8.0(必须是该版本,因为pcl1.8.1-allinone包之前编译使用的是该版本)
准备
链接:https://pan.baidu.com/s/1_FRj2CULzTGW4f1uRRiMWA 提取码:hkos
下载之后新建一个build文件夹用于构建vtk,如下图
编译VTK
(1)编译VTK库文件
将下载好的VTK-8.0解压到3rdParty\下,在VTK-8.0里新建build文件夹,并清空PCL自带的VTK文件夹的内容,使用CMAKE进行相应的设置。
where is the source code 为你的VTK-8.0的路径
where to build the binaries 为VTK-8.0里build的路径
第一次点击configure,等configure完成之后勾选Grouped和Advanced,进行以下设置:
- BUILD下取消勾选BUILD_TESTING
- CMAKE下CMAKE_INSTALL_PREFIX设置为你清空的VTK文件夹
- VTK下勾选VTK_Group_Qt
- VTK_RENDERING_BACKEND设置为OpenGL(这里一定要注意,否则pcl显示框会出错)
- 点击Add Entry,添加CMAKE_DEBUG_POSTFIX,Value设置为-gd(用来区别debug和release版本)
再次点击configure,如无error,点击Genrate。
直接点击open project可以打开项目,也可以进入到build目录下,使用VS打开VTK.sln
- 首先Debug x64下,右键ALL_BUILD生成,再右键INSTALL生成;
- 然后Release x64下,右键ALL_BUILD生成,再右键INSTALL生成;
将3rdParty\VTK\plugins\designer下的QVTKWidgetPlugin.dll拷贝到QT\5.7\msvc2015_64\plugins\designer下,这样Qt里面就有了QVtk的控件了。
然后不要忘了将上面的PCL VTK库文件目录改成自己命名或者生成的库文件夹名字,Debug和release都需要.
错误1:
在编译好之后发现很多的错误
折腾了很久,终于在晚上10点,看到一篇博文,这就是链接的问题,原来的链接库不完全,找到lib文件下。
解决办法:
1、新建一个text,加入下面的这段代码
@echo off
for %%I in (*.lib) do echo %%I>>all.txt
for %%I in (*debug.lib) do echo %%I>>adebug.txt
for %%I in (*release.lib) do echo %%I>>arelease.txt
pause
2、后缀改成.bat,双击运行,会产生一个all.text
3、将all.text中内容复制到链接属性表去,再次编译就可以通过
错误2:QWidget: Must construct a QApplication before a QWidget
在我以为大公告成的时候,还是出现了一个错误
解决办法:
这是由于lib文件链接混乱导致出错,将生成的release版本lib文件和debug下的文件分开链接,修改了链接库就解决这个问题了。
参考:
https://blog.csdn.net/Fengyueshengqi/article/details/80619006