VTK 学习(一)Window 10+ qt 5.14.2 + vtk8.2.0 安装配置过程(Cmake)
一、前期准备
编译vtk所需环境 |
|
VTK源码(8.2.0) |
|
Cmake(cmake-3.17.1-win64-x64) |
|
VS2019(专业版) |
|
QT(5.14.2.) |
二、 编译之前规划
先为VTK新建一个文件夹,将此目录作为VTK的家目录。在VTK目录之下新建四个目录,它们分别是:VTK-8.2.0-src(将下载的源码解压到此目录下);VTK-8.2.0-bin(VTK在编译时生成编译的二进制文件放在此文件夹中);VTK-8.2.0-Install-VS2017-x64-Release(生成的lib文件include文件放于其中,此即我们需要的库的Release版本);VTK-8.2.0-Install-VS2017-x64-Debug(生成的lib文件include文件放于其中,此即我们需要的库的Debug版本)
注意:VTK官网提供了VTK-Data-8.2.0可用可不用
三、安装vs 2019
这个不啰嗦了,c++必选,其他没注意
四、安装qt
MSVC2017 64-bit 必须勾选,没有2019的标识可选
五、在VS2019中安装QT插件
打开VS2019,扩展——管理扩展,搜索qt,安装下图插件。关闭VS2019自动安装。
打开VS2019,扩展——Qt VS Tools——Qt Option
六、安装Cmake
注意的是把他添加到系统环境变量中,3个选项中应该选第二个,注意一点
七、Cmake编译VTK库
-
打开安装的cmake-gui,选择VTK源码路径,以及二进制存放路径,此即我们规划的VTK-8.2.0-src与VTK-8.2.0-bin。开始Config即可
-
选择2019 Win64编译。选择后点击Finish。
-
第一次Config完成以后,此时界面会变成红色。我们需要对一些选项进行配置。这一步我们勾选BUILD_EXAMPLES即编译VTK自带的示例文件。当然这不是必须的,勾选编译示例会增加额外的编译时间。但是,BUILD_SHARED_LIBS一定确保是勾选的,VTK-8.2.0默认是勾选的。此项的作用是生成动态共享库DLL。
-
CMAKE_INSTALL_PREFIX是我们VTK库要安装的位置,亦即VTK编译后生成的库文件所在位置,建议将位置修改为我们规划的Debug文件夹。虽然图中是Release,但是我还是建议选择Debug文件夹,因为我的思路是先生成Release版本的VTK库,生成后,将所有文件全部剪切到Release文件夹下。接下来再次生成Debug版本,就会在Debug文件夹里了。之所以这么做,还是因为我们选择CMAKE_INSTALL_PREFIX路径后不可以改变。
注意:文件深度不能太深,我就是取得名字太长,导致文件夹路径太长,配置不能选,总之名字别太长,不能有中文,特殊字符就可以了
-
使用Qt必须此处要勾选VTK_Group_Qt。
-
Debug版本的库后面一般带d表示是Debug版本。为了区分版本,我们在CMAKE_DEBUG_POSTFIX后面添加d这样进行Debug版本编译时会在库文件名后面多个d。可以不用
-
如果你下载了VTK-8.2.0-Data,在VTK_DATA_STORE中可以选择VTK-8.2.0-Data所在的路径。这一步为非必要步骤。执行完以上步骤以后再次点击Config。
-
你会发现这里还是有一片红色区域,让我们选择Qt5的位置,当然你可以提前选,我的是Qt_DIR E:\install\qt\5.14.2\msvc2017_64\lib\cmake\Qt5
-
确定VTK_QT_VERSION是5版本,一般都是然后再次点击Config
-
Configuring done后,此时是白色区域,代表没有错误。如果你的界面依旧有红色,返回检查以上哪步没有勾选,一直Config到白 色界面位置。此时可以点击Generate。
Generate done后,同样是白色区域,代表没有错误。到这里CMAKE的阶段就已经完成了。
八、用VS2019编译vtk
-
Cmake阶段完成以后,找到我们规划的VTK-8.2.0-bin文件夹,找到VTK.sln。打开Visual Studio2019,此时打开VTK.sln项目,因为项 目非常大,文件非常多,所以打开的速度会比较慢。
-
项目已经加载完毕后,此时选择【生成】-->【批生成】。
-
在ALL_BUILD Release x64 栏 勾选 √---->点击【生成】。这一步会执行很长的时间。时间较长,一般的电脑得花一个多小时。
-
终于生成完了。
-
接下来,把刚刚勾选的ALL_BUILD Release后面的√去掉,下拉,在INSTALL Release后面勾选。这一步就是在安装VTK的Release版本,生成Release版本的库文件。
-
当你看到这一步的时候,你已经成功的生成了VTK-8.2.0的Release版本的库文件。到哪里去找呢?生成的Release版库文件在我们规划的Debug里面(因为我们Camke时选择的这个文件夹),这时我们需要把文件剪切到Release文件夹里,到这里Release版本生成成功。
-
这便是release VTK的库文件
-
你会发现Release版本的后面没有d。我们以后使用VTK进行开发,用的就是这些库文件。
-
如果你需要Debug版本的VTK库,此时需要在【生成】-->【批生成】里,把刚刚勾选的INSTALL Release后面的√取消。然后可以直接一起勾选ALL_BUILD DEBUG x64 与 INSTALL Debug,生成结束以后,会在Debug文件夹里生成库文件。此时编译阶段完成。
-
生成的Debug版本的库后面带d,以区分Release版本。
九、后续配置
VTK的Release版本与Debug版本的库都已经生成完毕了,此时我们该考虑如何在Qt Creator中使用生成的VTK库。如何在Qt Creator 中使用VTK库,我会在下面一篇文章中详细介绍,这里我们先做一些准备。
-
将Release 版本下 E:\work\Release\plugins\designer\QVTKWidgetPlugin.dll,E:\work\VTK-8.2.0-bin\lib\Release下的QVTKWidgetPlugin.exp与QVTKWidgetPlugin.lib复制到 Qt Creator的E:\install\qt\5.14.2\msvc2017_64\plugins\designer\文件夹下,此时单独打开Qt Designer(msvc2019_64版)会发现已经集成了 QVTK。可以通过拖动的方式绘制
- 将VTK的路径放于系统的Path路径里
【控制面板】-->【系统和安全】--【系统】-->【高级系统设置】-->【环境变量】,新建,固定写VTK_DIR变量值为VTKConfig.cmake所在的路径,这里是方便后面以Cmake的方式构建VTK程序。下面就是后面因为目录长,把文件目录名改为了Release
十、建项目测试
1.新建项目
一路向next
2.点击进入qt designer
3. 拖入一个控件 记得保存,我就是没保存,啥错也不报,爽,结果。。。。。
4.后面将有一堆错误
4.1 基本错误就不说了,直接先配置一下;
4.2 头文件没有喔?右键项目->属性->Vc++目录-->包含目录
还是在这个界面选 Vc++目录-->库目录
4.3 添加库文件 还是在这个界面下
连接器-》输入-》附加依赖项-》添加库
将E:\work\Debug\lib里的库文件一个一个加,太麻烦,度良有办法
下面图中两文件
文本文件里放 一句话 DIR *.lib /B >LIBLIST.TXT 然后改后缀为bat,运行就出来LIBLIST.TXT,里面的库文件全拷贝出来就可以了,添加就行了,看后面的图
4.4 为了防止动态库文件没有
我们先把库文件放到C:\Windows\System32和C:\Windows\SysWOW64(以防万一,我的不用拷贝);
E:\work\VTK-8.2.0-bin\bin\Release里的dll文件以及E:\work\VTK-8.2.0-bin\bin\Debug 里的dll文件都拷过去。
当然还有别的办法,比方说直接在项目里添加,这个简单,先用着
4.5 再运行一下
错误来了,这个错误添加
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
再运行弹出这个,有办法
解决问题:隐藏vtkOutputWindow,
在main.cpp下 包含“vtkoutputwindow.h”
然后在main的第一行用
vtkOutputWindow::SetGlobalWarningDisplay(0);