VTK和Cmake的安装并运行一个vtk的案例

发布于:2022-11-11 ⋅ 阅读:(848) ⋅ 点赞:(0)

VTK的安装并运行一个项目

1.CMAKE安装

要安装VTK的话首先需要安装CMAKE,CMAKE的官网: https://cmake.org/download/

进入Cmake下载网页,可以看到很多版本,我们选择最新的,在文件列表中,我们选择最便于安装的msi,如下图所示。

在这里插入图片描述

安装的时候我们选择添加到系统变量(for all users),这样就省去了手动添加环境变量的步骤。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J1a5f7NU-1668152353776)(C:\Users\代\Desktop\CSDN博客\VTK的安装\image-20221111145023048.png)]

访问安装路径中的bin里面的cmake-gui可以看到图形界面工具

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OafEVuCu-1668152353777)(C:\Users\代\Desktop\CSDN博客\VTK的安装\image-20221111145250653.png)]

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编译后生成的一些库文件,头文件的地方,这也是我们最终需要的东西。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1CgjbnFQ-1668152353778)(C:\Users\代\Desktop\CSDN博客\VTK的安装\image-20221111150430705.png)]

安装好后,打开cmake的gui,依次填入,第一个框是VTK的安装路径,第二个是VTK生成的代码,要自己提前创建一个文件夹来装生成的文件和代码。然后选择下面的两个选项,一个是分组展开,一个是展开复杂的选项。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TDSrcPid-1668152353779)(C:\Users\代\Desktop\CSDN博客\VTK的安装\image-20221111145802449.png)]

选择好后点击下面的configure

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ATdRSk6-1668152353780)(C:\Users\代\Desktop\CSDN博客\VTK的安装\image-20221111145934979.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fe0Ddt1P-1668152353781)(C:\Users\代\AppData\Roaming\Typora\typora-user-images\image-20221111150050274.png)]

接下来点击左下角的Configure,刚刚提到如果生成路径不存在就会提示你创建,选择同意就可以了,接下来需要等上5分钟左右,之后会看到界面满是红色,这代表Cmake程序按照指定的CmakeLists.txt文件进行编译后,有很多内容需要进行确认,备选的项目很多,大多数我们保持默认选项就可以,我们着重注意以下几个:

BUILD_EXAMPLES:生成一些vtk官方的examples,帮助理解学习,当然不选择也没事;
CMAKE_INSTALL_PREFIX:这里存放之后使用vtk时的一些动态库dll,二进制库lib,vtk的一些头文件之类的。图上此项的位置还是默认的,没有修改,应该改为刚创建的那个vtk-pefix文件夹的路径;
VTK_Group_Qt:我这里需要在Qt中使用vtk,所以选择了此项。

img

修改完之后继续Configure,这时候肯定会出现下图的红色,因为第一次的时候选择了VTK_Group_Qt,现在要把Qt安装目录中的cmake目录填进去,下图中的目录是我自己的Qt安装目录,注意更改。

img

接着第三次Configure,这时候会出现下图中的这些,这个不用管他不用修改,直接再点一次Configure,直到全部变成白色的界面为止。

img

在cmake的最下面信息输出处,如果输出一些warning警告的话不改也没事,不过最好根据提示修改一下,我这里偷懒,先不改了,先编译出来最要紧。只要下面显示Configuring done Generating done就好。然后再点击Generate,最后open project。

3.用vs编译vtk

进入到vs之后,打开VTK-install文件夹中的vtk.sln会打开整个项目,这时候右键解决方案名,按下图所示的步骤先设为启动项目再生成,这个生成时间比较长,可能要半个小时到一个小时,耐心等待。并且注意是要编译两版的,一版是Debug,一版是Release,编完默认的Debug后记得把工程切换到Release再编一下。

img

生成成功后,重复设为启动项目->生成的步骤给INSTALL

img

最后等INSTALL也生成成功了,再随便选一个其中的examples设为启动项目,ctrl+f5运行它,如果出现图像了说明整个的编译结束完成了。

img

4.用编译好的VTK在vs中写程序

首先新建一个vs的控制台项目,名字随意,默认下一步创建即可。

img

方便起见,这里从上章中的VTK.sln中随便找个example复制一下它的代码,就拿这个Cube吧,Cube.cxx中便是它的代码。

img

这时候看到的应该都是红色没有导入依赖,这时候我在网上看到有人将dll文件直接导入到了项目的根目录中,但是我找到另一个办法就是:

右击project -> 属性 -> 调试 -> 工作目录 修改为那个文件夹的路径即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PBgtqmTG-1668152353782)(C:\Users\代\Desktop\CSDN博客\VTK的安装\image-20221111150809713.png)]

然后我们在新项目中配置VTK:

a、设置vc++的包含目录,在其中添加vtk安装路径下的include路径,如:
D:\VTK\vtk-prefix\include\vtk-8.2

切记不要删除路径前面的那些带$的相对路径,你要在那些路径后面打上一个";"(也是分号)然后继续写你自己的路径,不然会出错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YvH5x5Lw-1668152353783)(C:\Users\代\Desktop\CSDN博客\VTK的安装\image-20221111151251802.png)]

b、设置vc++的库目录,在其中添加vtk安装路径下的lib路径,如:
D:\VTK\vtk-prefix\lib

切记不要删除路径前面的那些带$的相对路径,你要在那些路径后面打上一个";"(也是分号)然后继续写你自己的路径,不然会出错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lUtkPwD9-1668152353783)(C:\Users\代\AppData\Roaming\Typora\typora-user-images\image-20221111151403057.png)]

c、在链接器->输入->附加依赖项中添加使用的lib项,如:
D:\VTK\vtk-prefix\lib*.lib

切记不要删除路径前面的那些带$的相对路径,你要在那些路径后面打上一个";"(也是分号)然后继续写你自己的路径,不然会出错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Lr7p7Br-1668152353784)(C:\Users\代\Desktop\CSDN博客\VTK的安装\image-20221111151554279.png)]

然后确认后就可以看到引用不会爆红了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QxbLlh2o-1668152353785)(C:\Users\代\Desktop\CSDN博客\VTK的安装\image-20221111151758028.png)]

此时可以按ctrl+f5运行了,但很可能出现如下图所示的错误

img

此时在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

最后可以输出出来!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ViflMyCo-1668152353786)(C:\Users\代\Desktop\CSDN博客\VTK的安装\image-20221111153616948.png)]

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到