0.系统环境+库环境
- ubuntu20.04(如果你想使用Ubuntu22.04或22.10安装VTK8.2,则需降低CMake版本,如cmake3.16.3,或更改cmake文件)
- qt5.12.12(需要声明的是,如果你想使用QT6,则建议安装VTK9以上版本,VTK8对QT6的支持并不好,对于初学者VTK9删去了QVTKWidget,其相关资料较少,学习难度较大,而VTK8不仅继续含有QVTKWidget,也有最新的支持方式,详细可参考这篇文章)
- vtk8.2.0(或从官网下载最新版本)
qt+vtk网上教程一大堆,然而,具体实现过程中我却遇到了诸多问题,我曾尝试在ubuntu22.04下编译qt6+vtk9.2,虽然能够正常编译和安装,但安装后发现QVTK库根本没有编译出来,ubuntu22.04对vtk8.2支持也并不友好,不仅在cmake版本上有所限制,更是对系统中一些库的依赖解决并不充分,因此,迫不得以,最终选择了Ubuntu20.04,但通过一些教程虽安装成功,不知是否是个例,因改动了libusb库导致系统无法正常开机进入桌面。经过多天尝试,终于有了一次成功经历,并在重装ubuntu下得到了验证,在此分享。
1.安装依赖环境
首先还是建议将系统各库进行更新
sudo apt update
sudo apt upgrade
安装依赖
sudo apt install -y build-essential cmake
sudo apt install -y qt5-default
sudo apt install -y cmake-qt-gui
这里,在ubuntu20.04下,系统自动选择的Cmake版本是3.16.3,可以正常使用。
2.QT安装
QT安装此处略过,网上教程较多,只说一下重点:
我的安装目录是/home/user/Software/QT5.12.12
安装组件选择了除Android以外的全部。
在安装结束后,可选择性地对系统QT环境进行配置,不配置也可以。
具体配置方法:
sudo gedit ~/.bashrc
打开后在文件末尾添加下列内容:
export QTDIR=/home/zyr/Software/Qt5.12.12/5.12.12/gcc_64
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
最后,更新
source ~/.bashrc
3.VTK编译和安装
在安装vtk之前,要确保xt库的正常,可以输入以下代码
sudo apt install -y libxt-dev
将下载的vtk-8.2.0.tar.gz包提取,进入vtk-8.2.0文件夹,并在里面新建文件夹,命名build
使用cmake-gui,设置源码目录和输出目录,勾选Group和Adavanced,点击config,按下图设置
在第一次configure后,设置CMAKE中,CMAKE_BUILD_TYPE为Release,BUILD里,确保BUILD_SHARED_LIBS被勾选,然后搜索QT,设置如下
切忌不要勾选Module_vtkGUISupportQTWebkit,因为QTWebkit在QT5.5版本以后被QTWebEngine替代,QTWebkit被删除。
继续Configure。可能输出会继续出现红色,一定要将QT目录替换为自己安装的QT目录,一路Configure,直至红色消失,最终的设置如下图:
最后点击Generate,生成文件。
关闭Cmake-gui界面,进入build文件夹,打开terminal,依次输入
make -j$(nproc)
等待编译成功
sudo make install
4.VTK资源导入QT Designer
在install后,系统不会自动将QVTK相关组建导入QT Creator,需要自行查找libQVTKWidgetPlugin.so文件,并将其复制入QT Designer的目录。在此,我的文件生成地址在/usr/local/plugins/designer,将其复制进QT目录。
5.代码测试
打开qt creator,在Projects页面打开现有工程
选择vtk源码目录下的Examples文件,随机找一个QT例子进行演示
6.问题汇总
(1)Cmake错误
Cmake版本过高,可降低Cmake版本,或修改CMakeLists.txt 中cmake_minimum_required(VERSION 3.19.2 FATAL_ERROR),将其中version 改为自己的CMake版本
(2)VTKData 编译不过
将VTKData-7.1.1.zip / VTKlargeData-7.1.1.zip 解压到ExternalData/Objects/MD5/文件夹下
(3)VtkGUISupportQtOpenglCxxTests编译不过
将Qt5OpenGLd.lib 添加到依赖项即可。
(4)安装了支持库,cmake也没出错,但编译失败
可能系统安装的其他环境,如ros等更改了库的版本或导致出现多个同样的库,从而系统找不到对应的版本
持续更新中…