VTK的安装并运行一个项目
1.CMAKE安装
要安装VTK的话首先需要安装CMAKE,CMAKE的官网: https://cmake.org/download/
进入Cmake下载网页,可以看到很多版本,我们选择最新的,在文件列表中,我们选择最便于安装的msi,如下图所示。
安装的时候我们选择添加到系统变量(for all users),这样就省去了手动添加环境变量的步骤。
访问安装路径中的bin里面的cmake-gui可以看到图形界面工具
2.VTK的安装
我们首先到vtk官网上下载(https://www.vtk.org/download/),下载source里面的VTK-8.2.0.zip
接着把下载下来的VTK压缩文件解压,进入到目录中,再创建两个文件夹分别叫vtk-install和vtk-prefix,其中vtk-install是cmake配置后生成vs解决方案的地方,而vtk-prefix是存放vs编译后生成的一些库文件,头文件的地方,这也是我们最终需要的东西。
安装好后,打开cmake的gui,依次填入,第一个框是VTK的安装路径,第二个是VTK生成的代码,要自己提前创建一个文件夹来装生成的文件和代码。然后选择下面的两个选项,一个是分组展开,一个是展开复杂的选项。
选择好后点击下面的configure
接下来点击左下角的Configure,刚刚提到如果生成路径不存在就会提示你创建,选择同意就可以了,接下来需要等上5分钟左右,之后会看到界面满是红色,这代表Cmake程序按照指定的CmakeLists.txt文件进行编译后,有很多内容需要进行确认,备选的项目很多,大多数我们保持默认选项就可以,我们着重注意以下几个:
BUILD_EXAMPLES:生成一些vtk官方的examples,帮助理解学习,当然不选择也没事;
CMAKE_INSTALL_PREFIX:这里存放之后使用vtk时的一些动态库dll,二进制库lib,vtk的一些头文件之类的。图上此项的位置还是默认的,没有修改,应该改为刚创建的那个vtk-pefix文件夹的路径;
VTK_Group_Qt:我这里需要在Qt中使用vtk,所以选择了此项。
修改完之后继续Configure,这时候肯定会出现下图的红色,因为第一次的时候选择了VTK_Group_Qt,现在要把Qt安装目录中的cmake目录填进去,下图中的目录是我自己的Qt安装目录,注意更改。
接着第三次Configure,这时候会出现下图中的这些,这个不用管他不用修改,直接再点一次Configure,直到全部变成白色的界面为止。
在cmake的最下面信息输出处,如果输出一些warning警告的话不改也没事,不过最好根据提示修改一下,我这里偷懒,先不改了,先编译出来最要紧。只要下面显示Configuring done Generating done就好。然后再点击Generate,最后open project。
3.用vs编译vtk
进入到vs之后,打开VTK-install文件夹中的vtk.sln会打开整个项目,这时候右键解决方案名,按下图所示的步骤先设为启动项目再生成,这个生成时间比较长,可能要半个小时到一个小时,耐心等待。并且注意是要编译两版的,一版是Debug,一版是Release,编完默认的Debug后记得把工程切换到Release再编一下。
生成成功后,重复设为启动项目->生成的步骤给INSTALL
最后等INSTALL也生成成功了,再随便选一个其中的examples设为启动项目,ctrl+f5运行它,如果出现图像了说明整个的编译结束完成了。
4.用编译好的VTK在vs中写程序
首先新建一个vs的控制台项目,名字随意,默认下一步创建即可。
方便起见,这里从上章中的VTK.sln中随便找个example复制一下它的代码,就拿这个Cube吧,Cube.cxx中便是它的代码。
这时候看到的应该都是红色没有导入依赖,这时候我在网上看到有人将dll文件直接导入到了项目的根目录中,但是我找到另一个办法就是:
右击project -> 属性 -> 调试 -> 工作目录 修改为那个文件夹的路径即可
然后我们在新项目中配置VTK:
a、设置vc++的包含目录,在其中添加vtk安装路径下的include路径,如:
D:\VTK\vtk-prefix\include\vtk-8.2
切记不要删除路径前面的那些带$的相对路径,你要在那些路径后面打上一个";"(也是分号)然后继续写你自己的路径,不然会出错
b、设置vc++的库目录,在其中添加vtk安装路径下的lib路径,如:
D:\VTK\vtk-prefix\lib
切记不要删除路径前面的那些带$的相对路径,你要在那些路径后面打上一个";"(也是分号)然后继续写你自己的路径,不然会出错
c、在链接器->输入->附加依赖项中添加使用的lib项,如:
D:\VTK\vtk-prefix\lib*.lib
切记不要删除路径前面的那些带$的相对路径,你要在那些路径后面打上一个";"(也是分号)然后继续写你自己的路径,不然会出错
然后确认后就可以看到引用不会爆红了
此时可以按ctrl+f5运行了,但很可能出现如下图所示的错误
此时在cpp的代码中最前面加入下面几行即可,这几行代码可以初始化指定的VTK模块,在之前的VTK.sln中,由于是Cmake配置的,CMake默认包含这些,但是其他编译器例如VS则并不包括,需要手动指定。指定的具体代码要根据用到的模块来写,如下面最后一行的VTK_MODULE_INIT(vtkRenderingFreeType);就是因为用到了vtkTextActor。
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType); // Build with vtkTextActor
最后可以输出出来!
GL2
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType); // Build with vtkTextActor
最后可以输出出来!