vtk版本升级了怎么跑低版本的后处理程序 vtk

vtk安装经典方法_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
vtk安装经典方法
&&vtk经典安装方法
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩2页未读,
定制HR最喜欢的简历
你可能喜欢VTK配置步骤(WIN7 64位 + VS2012 + VTK-5.10.1) - ITkeyowrd
VTK配置步骤(WIN7 64位 + VS2012 + VTK-5.10.1)
推荐:opencv1.0(支持vc6.0)与vc6.0配置 假设安装到E盘下 1、添加环境变量 path下 E:\opencv1.0\bin 2、打开vc6.0进行配置,选择tools-&options-&Directories,选择i
领取地址:
由于项目中需要用到VTK,上周三就开始编译VTK源码,中间出现了一系列问题。首先是下载的高版本代码顺利编译后,自己新建的工程总是提示链接错误,尽管所有的库文件都加入了,还是不正确。之后下载了vtk较低版本5.8.0,源码有几处错误,参考新版本修改后,依然是自己新建工程链接错误。就这样一直到周五都没有成功。在群里也没能得到解决办法,到是发现大家最初配置时都出现过很多问题,有的一个月才配置好,简直吓尿了。幸好偶然有一位仁兄告诉了我他的成功配置版本,就是vs2012+vtk5.10.1,但是他的是WIN8 64位,于是周末在家沉思两天后,决定先用这个版本在WIN7上试下,不行就上WIN8去试。周一的上午我很清醒,满血的感觉就是好,于是我又开始倒腾起来了,没想到啊,成功啦。
//***********************
配置方法很多很多,这只是我的方法,也是参考了很多人的教程之后的结果,也许当你完全没辙时,能帮上一点忙。
1.下载相关软件
vtk-5.10.1.zip和vtkdata-5.10.1.zip
cmake-2.8.12.2.zip:
推荐:最近配置vtk,走了很多弯路,当然也学到了很多东西,且行且记。下面是安装和配置的步骤: 下载,vtk-source,vtk安装包(暂时没用到,先安上),vtk-data(同左
2.解压以上三个包,放在E:\vtk下,vtk-5.10.1和vtkdata-5.10.1分别改名为VTKsourcecode和VTKData。
3.以管理员身份打开E:\vtk\cmake-2.8.12.2-win32-x86\bin下的cmake-gui.exe,在source code和binaries里填上如图的路径后,点Configure。选择Visual Studio 11编译器,虽然是64位但是有教程建议不要选Visual Studio 11 win64,我也没有试过。在Configure过程中会出现一些warning,不用管。等Configure完成以后,有几项需要修改,如下:
vtk_data_root,浏览到例子数据所在位置,E:\vtk\VTKData
build_examples:勾选上则编译例子,建议选择
build_testing: 勾选上则编译测试代码,建议选择
vtk_use_parallel:勾选(并行计算相关的,按需求选择)
build_shared_libs: 设置为on,将会多生成 dll 文件,这些dll需要拷到Windows/SysWOW64目录下。要是用静态库编程,即off时,应用程序可以独立运行,尺寸也比较大,要是用动态库编程, 即on时,应用程序必须找到动态库才能运行,但尺寸可以做得比较小。我选择的是on。
vtk_use_GUIsupport:勾选
再次Configure后,有一项红色为vtk_use_mfc,再勾选后Configure。
以上正确完成后点击Generate。此过程中可能会出现SAFESEH映像不安全的问题,只要在相应项目的链接器命令行加入/SAFESEH:NO即可。完成后关闭CMake。
4.用VS2012打开E:\vtk\VTKbin\Utilities\MaterialLibrary目录下的 MaterialLibrary.sln 文件,右键点击All_Build选择重新生成。把E:\vtk\VTKbin\bin\Debug里生成的vtksys.dll拷贝到Windows\SysWOW64下。或者打开VS2012的属性管理器,双击任意“Microsoft.Cpp.Win32.user”,弹出属性页,在里面VC++目录的 Library Directories 中将bin文件夹中的Debug包括进去。
5.打开E:\vtk\VTKbin下的VTK.sln,右键点击All_Build选择重新生成。
6.完成这些之后可能会出现涉及MFC的错误,解决方法如下: ①在解决方案中分别找到vtkDLG,vtkMDI,vtkSDI这三个项目,右键→Properties→Configuration Properties→Linker→Input→在Additional Dependencies中添加..\..\..\..\..\bin\Debug\vtkIO.lib ②再找到Win32SampleMFC这个项目,与以上类似,添加..\..\..\..\bin\Debug\vtkIO.lib这样,就为这些项目加入了vtkIO.lib库。 这时,如果选择项目Cone6,Win32SampleMFC都可以调试通过,应该就没有问题了。
7.到此还没有完成哦,自己新建的项目还需要配置。 新建项目Test ①配置附加包含目录,位于配置属性→C/C++常规,这一步根据项目头文件来选择加入E:/vtk/VTKbin和E:/vtk/VTKsourcecode下的哪些文件夹。 ②附加依赖项,位于链接器→输入,拷入下述内容。 kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib comctl32.lib vfw32.lib ws2_32.lib wsock32.lib opengl32.lib E:\VTK\VTKbin\bin\Debug\vtkRendering.lib E:\VTK\VTKbin\bin\Debug\vtkIO.lib E:\VTK\VTKbin\bin\Debug\vtkDICOMParser.lib E:\VTK\VTKbin\bin\Debug\vtkNetCDF_cxx.lib E:\VTK\VTKbin\bin\Debug\vtkNetCDF.lib E:\VTK\VTKbin\bin\Debug\vtkmetaio.lib E:\VTK\VTKbin\bin\Debug\vtksqlite.lib E:\VTK\VTKbin\bin\Debug\vtkpng.lib E:\VTK\VTKbin\bin\Debug\vtktiff.lib E:\VTK\VTKbin\bin\Debug\vtkzlib.lib E:\VTK\VTKbin\bin\Debug\vtkjpeg.lib E:\VTK\VTKbin\bin\Debug\vtkexpat.lib E:\VTK\VTKbin\bin\Debug\vtkGraphics.lib E:\VTK\VTKbin\bin\Debug\vtkverdict.lib E:\VTK\VTKbin\bin\Debug\vtkImaging.lib E:\VTK\VTKbin\bin\Debug\vtkFiltering.lib E:\VTK\VTKbin\bin\Debug\vtkCommon.lib E:\VTK\VTKbin\bin\Debug\vtksys.lib E:\VTK\VTKbin\bin\Debug\vtkftgl.lib E:\VTK\VTKbin\bin\Debug\vtkfreetype.lib E:\VTK\VTKbin\bin\Debug\vtkMFC.lib E:\VTK\VTKbin\bin\Debug\vtkWidgets.lib
好了,这时在Test\Debug下就应该能看到例子程序运行成功的样子了。
推荐:主要参考http://www.cnblogs.com/xing901022/archive//3248469.html 一.安装CUDA5.5以及配置VS助手 1、安装之前必须确认自己电脑的GPU支持CUDA。在设
由于项目中需要用到VTK,上周三就开始编译VTK源码,中间出现了一系列问题。首先是下载的高版本代码顺利编译后,自己新建的工程总是提示链接错误,尽管所有的库文件都加入了,还是不正确。之后下
相关阅读排行
相关内容推荐
请激活账号
为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。
您的注册邮箱:
如果您没有收到激活邮件,请注意检查垃圾箱。vtk的简单介绍和安装
自己用vtk有两三年了,不精不专,但多少有些收获,一时兴起,写一些 vtk安装的文字。我选用的version是最新的稳定版本5.0,其实所有的内容都可以从vtk官方网站http://vtk.org上获得。一、简要介绍VTK(Visualization Toolkit)是一款用于二次开发的可视化工具包,在世界上同类产品中最有影响,基本上可以作为可视化领域的规范。VTK的历史和现状:1993年12月,GE的Will Schroeder, Ken Martin两个人写了一本书: The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics,VTK作为这本书的配套软件赠送。由于VTK的出色表现,人们对软件的关注程度远远超过了书,没有几年时间VTK就拥有了巨大的用户群。VTK现在是由kitware公司维护,以开源的形式开发,全世界所有的人都可以加入到开发者的行列。现在VTK的稳定版本是5.0,nightly 版本每天都会有更新。VTK的特点:Open Source。采用CVS版本控制跨平台。支持Windows、Unix、Linux、Mac等多种平台功能强大。适合几乎所有的可视化领域,从医学可视化到数据可视化,都能找到VTK的用户支持多种语言开发。c语言当然不用说了,还包括脚本语言,如TCL、Python,也支持Java具有强大的开发团队。包括多家开发单位,具有商业化的维护,具有来自全世界使用者的智力资源:)二、安装前的准备因为VTK是开源的,我们能从官方网站上得到它的源码,又因为它是跨平台的,我们就要对源码进行一些包装,才能被gcc vc6.0等不同编译器所接受。VTK使用的跨平台工具是CMake,它也是kitware公司的产品,可以从官方主页上获取。很多人不清楚cmake到底是干什么的,我这里想解释解释。我们下载的vtk源码都是用c++编写的,是一个大的工程,无论在什么平台,用什么编译器,你都要告诉编译器该如何去编译这么一个庞然大物。工程文件是工程的一般组织形式,比如vc6.0下面是dsw文件,gcc下可以把makefile看成这么一个东西。这些工程体系告诉编译器该干什么,需要什么样的参数等,好,cmake就是这样一个用来生成适合不同编译器所需要的工程文件的工具。 cmake为什么知道那些编译参数呢,这不得不提CMakeList.txt这个文件,正是这个文件,提供了这些信息,换句话说,如果没有CMakeList.txt,我们就不能使用cmake。有人又会问,如果不用cmake,可以编译vtk吗?那当然可以,比如在vc中,可以建立一个新的工程,把文件一个个往里面添加,编译选项也要自己加,在linux下,就自己写makefile,当然,这个方法几乎是无法实现的,就算实现,在今后的开发过程中还会遇到很多麻烦。所以,还是乖乖用cmake吧!安装前,需要获得下面的文件,我这里以vtk5.0为例,在winxp+vc6.0和linux+gcc下实现linxu:
预安装gcc3.0vtk-5.0.0.tar.gz
vtk的源码vtkdata-5.0.0.tar.gz
vtk例子所需要的数据cmake-2.4.3-Linux-i386.tar.gz
cmake程序,现在从官网上下载,是免编译的windows:预安装vc6.0vtk-5.0.0.zip
vtk的源码vtkdata-5.0.0.zip
vtk例子所需要的数据CMSetup243-win32.exe
cmake安装程序上面不同系统下,vtk源码以及data其实是一样的,只不过使用了不同打包工具。另外,cmake版本的选择是根据vtk版本来定的,比如vtk5.0所需要的最低cmake版本好像是2.0,这里我们索性用更新的2.4。三、windows下的vtk安装1、安装cmake这个应该很简单吧,windows下安装软件是傻瓜化的,运行CMSetup243-win32.exe,不停地点击下一步就行了2、解压两个压缩包,建立所需文件夹我不喜欢直接在源码里编译,而是另外建立一个bin文件夹。比如我把c:/vtk/作为我们的主目录,将vtk源码解压在vtk5.0这个文件夹中,把data解压在vtkdata这个文件夹中,再建立一个空的文件夹取名为bin。注意,./vtk5.0下面,应该就是一大堆文件夹和文件,./vtkdata下面应该也可以发现几个子文件夹。3、运行cmake首先,将源码和编译工作目录两个目录添好,在这个例子中,sourse code目录是c:/vtk/vtk5.0/,build 目录是c:/vtk/bin/。再按configure按钮,cmake软件会让你选择需要使用的编译器,这里我们选vc6.0,然后,cmake就会对系统进行扫描了,停下来之后,我们就可以修改cmake选项了。修改cmake选项。这个环节还真不好说,一般vtk的初学者只需要用默认设置就行了。我只提醒一些比较重要的选项:build_examples: 就是询问是否编译vtk中的例子,如选则on,就要花时间把vtk的例子编译一遍,我一般不选build_testing: test code 就是vtk开发者用来测试 vtk代码的一些测试代码,我们常常把它们当成学习vtk的例子,与build_examples类似,是否编译他们,看个人喜好。build_shared_libs: 如果设置为off,就只会生成lib文件,用于开发肯定是够了。如果设置为on,将会多生成dll文件。他们的区别不是我这里说得清楚的,反正如果用静态库编程,应用程序可以独立运行,尺寸也比较大,如果用动态库编程,应用程序必须找到动态库才能运行,但尺寸可以做得比较小cmake_install_prefix: 这个比较重要,就是以后要安装vtk的路径。有些人又要问,我编译完了不就可以用vtk了吗,为什么还要安装?对,不安装其实可以,安装的好处就是可以从 1G多的文件中提取出.h .lib .dll等精华,安装在指定目录下,并修改系统环境变量vtk_data_root: 一般地,cmake可以自己找到vtkdata的路径,但如果没有,把c:/vtk/vtkdata/填上即可,告诉cmake,vtk需要的数据都在哪里vtk_use_parallel: 对于想用vtk做并行计算的朋友,要把这个选上,对于只想学学vtk的,保持默认offvtk_use_guisupport: 很多人把vtk安装好了,却无法运行vtk中与mfc混合编程的例子,提示错误都是缺少vtkmfc.lib,问题就出在这个选项,我们必须把它设置为 on,再次configure之后,会出现一个新的选项vtk_use_mfc,把它也设置为on就行了。提示:在cmake中,有些选项是依赖于另一些选项的,比如vtk_use_guisupport和vtk_use_mfc,当我们禁用vtk_use_guisupport,vtk_use_mfc是看不到的。修改完cmake选项以后,不停的按configure按钮,直到没有选项显示为红色,而且此时,ok按钮可用,点击ok按钮,就可以生成vc的工程文件了。4、用vc6.0编译用vc6.0打开bin目录下的vtk.dsw文件,因为文件很多,打开速度会有些慢。打开后,直接build。编译的用时和计算机性能,以及cmake中的一些选项有关,一般1个小时内可以完成。结果保存在./bin/bin目录下。编译也会出现不成功的时候,就要看编译器提示的错误类型来处理了!5、安装用vc6.0打开bin目录下的install.dsp文件,不用理会提示的错误,直接build。编译结果就会安装在cmake_install_prefix设定的目录下。这个时候,把c:/vtk目录删除都行。当然,建议保留,也许以后还要更改cmake选项,再次修复编译呢。cmake会检查到改动,只处理改动过的地方,没有改动过的就不要重新编译了。四、在linux下的vtk安装linux下安装和windows下安装思路是一样的,我这里假设你已经基本熟悉linux的基本操作。1、安装cmake现在从官方网站上下载的cmake是免编译的,我们可以直接在cmake源码的bin文件夹下找到ccmake这个可执行文件。就算没有编译,自己动动手,编译一下吧。另外,最好把ccmake命令加入到系统可搜索的范围内,这样就能直接运行ccmake命令了。2、解压两个压缩包,建立所需文件夹同window下安装,指定一个主目录,比如~/vtk/,建立三个文件夹,解包。3、cmakecd ~/vtk/bin/ccmake ../vtk5.0修改cmake的选项也参考前面windows下的vtk安装,因为linux下的cmake是文字界面,所以操作起来不直观,功能还是没有少的。4、编译cd ~/vtk/bin/makemake命令可以看成是gcc编译器调用makefile文件,进行编译5、安装cd ~/vtk/bin/sudo make install这里之所以用sudo,是因为一些文件的读写需要root权限五、总结学习vtk最好的教材是vtk user guide,最好的解决的难题的方法是通过vtk mail list 、qq、论坛、google等方式。
没有更多推荐了,vtk版本升级了怎么跑低版本的程序_百度知道
vtk版本升级了怎么跑低版本的程序
我有更好的答案
鉴定为真品!!!
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。02-VTK编译安装
2、编译安装
学习VTK最好是从下载VTK源码,然后自己编译开始。编译VTK是很简单的一件事情,最重要的是把准备工作做好。本章将会详细演示如何编译安装VTK。
这里提到的VTK开发环境为:Windows 7旗舰版64位操作系统,Visual Studio 2008集成开发环境,CMake 2.8.6,Qt 4.8.2以及VTK 5.10 Release版本。后续所有的程序示例代码都是在这个环境下测试通过的。
编译VTK的准备工作
首先,你的计算机必须安装了VisualStudio 2008。如果采用其他集成开发环境(IDE)的,也必须先安装对应的IDE工具。编译64位版本的VTK之前,在安装Visual Studio 2008的时候,需要安装相应的64位组件。
其次,安装CMake。CMake下载地址:。Windows平台下只要下载文件cmake-2.8.6-win32-x86.exe即可。安装完CMake以后,运行界面如图2.1所示。
图2.1CMake界面
如果你在这之前没有听说过CMake,也不知道CMake如何使用,先不要着急。假如你实在比较急的话,可以先去Google或者百度一下CMake到底是个什么东西。
接着,如果你想自己编译VTK类库的帮助文档的话,还需要安装Doxygen工具。这一步不是必须的。
此外,如果你想使用Tcl、Python或者Java等语言开发的话,相应的工具也必须先安装。相关的文件可以从以下页面下载到:Tcl/Tk下载地址:;Python下载地址:;Java下载地址:。
最后,确定你想使用哪种工具作为界面开发,比如MFC、Qt、FLTK等等。以这个系列教程为例,采用Qt作为GUI(用户图形界面)开发工具,那么在安装VTK之前还必须安装Qt,Windows平台下的Qt Opensource编译版本可以从以下页面下载(和)。
换言之,如果你想使用C++作为开发语言,采用Qt作为GUI开发工具,但不想编译VTK的帮助文档(因为已经有现成的,编译帮助文档的时间也会比较长),那么在编译VTK之前,只要安装VisualStudio 2008、CMake和Qt即可。
编译VTK的详细步骤
将下载到的VTK源码文件vtk-5.10.0.zip解压到某个磁盘下,比如,解压到。然后,建立一个空的,叫什么名字无所谓,只要不含有中文即可(为了让文件名看起来规整统一,新建的文件夹命名为VTK-5.10-bin,完整的路径为:D:\Toolkits\VTK\VTK-5.10-bin)。接着解压下载的vtkdata-5.10.0.zip文件,比如解压到:D:\Toolkits\VTK\VTKData
(如果你没有下载vtkdata-5.10.0.zip文件,这一步也可以跳过)。
然后,打开CMake(界面如图2.1所示),在CMake界面上的“Where is the source code”里输入前一步解压vtk-5.10.0.zip之后的路径,即D:\Toolkits\VTK\VTK-5.10。也就是这个文本框应该输入VTK源码目录里最外层的CMakeLists.txt文件所在的路径。接着,在“Where to build the binaries”文本框里输入前一步新建的空文件夹的路径,即D:\Toolkits\VTK\VTK-5.10-bin,这个文本框所输的路径可以跟“Where
is the source code”的一样,分开两个不同的路径的好处是后续编译过程生成的文件不会跟VTK的源码混合在一起,避免对源码目录的“污染”,这也是后续内容介绍的CMake的“in-place”和“out-of-place”的区别。
以上两个文本框输入完之后,按“Configure”按钮,会弹出如图2.2所示的对话框,根据你自己的需要以及你计算机已经安装的IDE、编译器等选择适当的选项即可,比如,使用Visual Studio 2008,准备编译64位的VTK,则可以选择“Visual Studio 9 2008 Win64”选项(如果选择错误,要重新选择IDE选项的话,停止CMake的配置或者生成过程,点击CMake的File菜单下的Delete Cache之后,再重新用CMake配置VTK的时候就会重新弹出图2.2的对话框),然后确定,CMake即开始根据具体的平台环境配置VTK工程(配置时间会因硬件配置的不同而不同,一般需要几分钟时间)。
图2.2CMake选择编译环境的对话框
配置完成后,CMake界面如图2.3所示。
图2.3首次配置完VTK后的界面
关于VTK的一些CMake配置选项的说明:
BUILD_EXAMPLES —默认是关闭的,如果打开这个选项,则会编译VTK例子,同时VTK编译所需的时间也较长,占用的磁盘空间也较大。对于初学者来说,建议把这个选项打开。
BUILD_SHARED_LIBS —默认是关闭的,意味着VTK是静态编译;如果打开这个选项,则是动态编译。
“静态编译”与“动态编译”的区别:静态编译就是在编译的时候把所有的模块都编译进可执行文件(exe)里去,当启动这个可执行文件时所有的模块都已加载进来。动态编译则是编译的时候需要的模块都没有编译进去,一般情况下可以把这些模块都编译成动态链接库DLL,启动程序(初始化)的时候这些模块不会被加载,运行的时候用到那个模块就调用哪个DLL文件。静态链接库编译相当于你带着一个工具包到处跑,遇到有需要的地方不需要周围的环境提供相应的工具,自己用自己工具包的工具就行了,所以当环境发生变化可以尽可能的无视;动态链接库编译相当于不带任何东西,走到哪是哪。这两者的区别显然就是前者重量增加了,即程序的体积会比后者的大。
所以,究竟是用“静态编译”还是“动态编译”,关键看自己的需要。对于VTK初学者而言,所涉及到的工程可能都比较小,建议用“静态编译”,也方便把VTK程序移植到其他没有安装VTK的计算机上运行。本书的VTK类库是采用静态编译。
BUILD_TESTING —默认是打开的,表示会编译VTK的测试程序。VTK里每个类都有对应的程序文件对该类进行测试,对于初学者而言,可以关闭掉这个选项,后续如有需要,可以再打开此选项。
VTK_DATA_ROOT —指向VTKData所在的路径,即第1章里下载的文件vtkdata-5.10.0.zip解压后的路径。一般情况下,VTK能够自动搜索到,如果没有搜索到可以手动输入,在运行VTK的例子时需要用到这些数据。
CMAKE_INSTALL_PREFIX —这个选项表示VTK的安装路径,默认的路径是:C:/Program Files/VTK。该选项的值可不作更改,按默认值即可。
VTK_USE_QT —是否使用Qt。在这个系列里,我们使用Qt作为GUI开发工具,所以勾上该选项。
、VTK_WRAP_PYTHON、VTK_WRAP_TCL —这三个选项是供准备使用Java、Python或者Tcl语言开发VTK工程的用户选择的。VTK由两个子系统组成,分别是C++类库和提供给Java、Tcl和Python来操作该类库的解释器工具,如果勾上以上三个选项,即会编译这些解释器工具。
勾选图2.3的“Advance”复选框,可以在CMake界面上看到更多的选项,各选项分别表示什么意思,可以把鼠标在该选项名字停留片刻,即会弹出关于该选项的提示信息。另外“Advance”视图下以下几个选项需要说明一下:
BUILD_DOCUMENTATION —默认是关闭的,如果打开这个选项,则会编译VTK帮助文档,由于这个文档VTK已提供下载,所以可以不选。
VTK_USE_GUISUPPORT — VTK是否支持GUI,Windows下如果需要使用MFC开发的,需要勾选上这个选项。本教程在演示的时候也会把这个选项勾选,如果你确定不使用MFC,可以不用选择该选项。
定制每个选项的值以后,按“Configure”按钮,继续配置,CMake界面如图2.4所示。
图2.4定制完CMake选项,再Configure后的界面
由于在前一步里勾选了VTK_USE_GUISUPPORT,所以Configure以后会有新的红色选项VTK_USE_MFC出现,如果确定要使用MFC,需要把这个选项再次勾上。
继续按“Configure”按钮,直到没有红色的选项出现,然后按“Generate”按钮,开始生成VTK工程文件。这一步完成以后,打开在“Where to build thebinaries”里输入的路径,即D:\Toolkits\VTK\VTK-5.10-bin,可以看到如图2.5所示的目录结构。
接着双击该目录下的VTK.sln文件,打开VTK工程,如图2.6所示。Visual Studio 2008默认的编译版本是Debug,对于初学者来说,最好选择该版本进行编译,以方便后续程序的调试。由于我们在CMake最开始选择编译环境时选择的是“Visual Studio 9 2008 Win64”,所以Visual Studio 2008上显示的就是“X64”版本,即64位的。选择Visual Studio 2008里的Build菜单-&Build Solution(或者按F7键,关于快捷键可能有些版本的VS2008会不一样),开始编译VTK。计算机的配置情况不同,所需的编译时间也不一样,如果计算机配置还过得去的话,图2.6的118个工程编译下来的时间大约需要半小时左右。
图2.5用CMake配置完VTK生成的工程文件
图2.6打开VTK.sln后的界面,根据CMake的选项不同,该项目所包含的工程数目也不相同。该图显示的选择编译Example,没有选择编译Testing,一共有118个工程。
编译完成后,对应的Debug目录会生成如下文件:
图2.7VTK Debug版本下生成的文件
如果采用动态编译,在图2.7所在的目录,会生成对应的动态链接库DLL文件。至此,VTK编译完成。如果你还想把VTK相关的头文件、lib文件等提取出来,以便用于其他项目的开发,可以编译Solution下的“INSTALL”工程,右击该工程,选择菜单:“Project Only” -& “Build Only INSTALL”,VTK里所有的头文件以及相关的库文件等,即会被提取到你在CMAKE_INSTALL_PREFIX里指定的路径里,默认的路径是:C:/Program Files/VTK。
注意:由于Windows 7有管理员权限的问题,如果直接双击VTK.sln,然后编译INSTALL工程的话,会提示不能在C:\Program Files\下创建目录等错误,此时可以先关闭掉VTK工程,在“开始”-&“搜索程序及文件”一栏输入Visual Studio 2008,然后右击该程序,选择“管理员权限运行”Visual Studio 2008,接着在Visual Studio 2008下通过菜单打开VTK.sln文件,再重新编译INSTALL工程。
至此,就成功地编译并安装好了VTK。如果在编译安装VTK的过程中出现什么问题,可以在VTK users邮件列表上提问。
创建一个简单的VTK程序
在2.2一节里,我们详细讲解了如何编译、安装VTK,那么如何测试VTK到底有没有正确地安装,或者说怎么使用我们在前面编译出来的VTK函数库呢?
首先我们需要写一个CMakeLists.txt文件。前面的内容我们已经接触了CMake,也用CMake来配置过VTK工程,下面我们先看看CMake的介绍。
2.3.1 什么是CMake?
对于每个使用VTK的开发人员来说,必须认识的一个工具就是CMake,CMake的产生与发展也与VTK息息相关。以下一段内容摘自维基百科,主要是关于CMake的历史:
“CMake是为了解决美国国家医学图书馆出资的Visible Human Project项目下的 Insight Segmentation andRegistration Toolkit (ITK)软件的跨平台构建的需求而创造出来的,其设计受到了Ken Martin开发的pcmaker的影响。pcmaker 当初则是为了支援Visualization Toolkit (VTK)这个开源的三维图形和视觉系统才出现的,现在VTK也采用了CMake。”
从以上关于CMake的介绍可以知道,CMake其实就是一个跨平台的工程构建工具,可以根据不同的平台生成与平台相关的工程配置文件,比如Windows平台采用Visual Studio,则可以生成*.dsw/*.sln等项目文件。利用CMake可以管理大型的项目,VTK就是使用了CMake作为项目管理工具。同时CMake也简化了工程构建过程,只要给工程里的每个目录都写一个CMakeLists.txt,就可以生成出该工程的编译文件。CMake支持in-place构建(也就是生成的二进制文件跟源文件在同一个目录)和out-of-place构建(编译链接生成的二进制文件和源文件分别在不同的目录,前面我们讲VTK编译过程时就是采用这种构建方式)两种工程构建方式。
CMake有自己的语言和语法,用CMake对工程进行管理的过程,就是编写CMakeLists.txt脚本文件的过程,原则上要求工程里的每一个目录都包含一个同名的文件,而且这个文件的名字只能是:CMakeLists.txt。假如写成cmakelists.txt,由于Windows不区别文件名大小写,所以可以通过;但如果在别的平台,如Ubuntu,用CMake构建工程时就会提示找不到CMakeLists.txt,所以建议,不管在哪个平台下,都使用CMakeLists.txt这个文件名,注意大小写。
2.3.2 写一个简单的CMakeLists.txt脚本文件
为了测试是否成功安装了VTK,我们可以建立一个简单的VTK工程进行试验。本书里提到的所有示例都是用CMake进行管理,因此需要先写一个CMakeLists.txt文件。同样先新建一个文件夹(为便于本教程后续示例工程文件的管理,我们在前面VTK的安装目录里新建一个名为Examples的文件夹,Examples文件夹里存放本教程里提到的所有程序示例,每个程序示例的命名风格为XXX_ProjectName,XXX表示示例所在的章节编号,ProjectName为工程的名字,比如以下测试示例命名为:2.3.2_TestVTKInstall,在本教程完整的路径为:,接下来的内容,你可以暂时不要急着问为什么,先按照描述步骤一步一步跟着试做一遍,后面的内容会逐行代码地解释,所以暂时你先“知其然”,后续的内容会让你“知其所以然”)。
然后在该目录下新建一个名为CMakeLists.txt的记事本文件。输入内容为:
cmake_minimum_required(VERSION2.8)
project(TestVTKInstall)
find_package(VTKREQUIRED)
include(${VTK_USE_FILE})
add_executable(${PROJECT_NAME}TestVTKInstall.cpp)
target_link_libraries(${PROJECT_NAME}vtkRendering vtkCommon)
接着在2.3.2_TestVTKInstall目录下新建一个cpp文件,名字名为TestVTKInstall.cpp,输入内容为:
#include"vtkRenderWindow.h"
#include"vtkSmartPointer.h"
vtkSmartPointer&vtkRenderWindow& renWin= vtkSmartPointer&vtkRenderWindow&::New();
renWin-&Render();
std::cin.get();
也就是在D:\Toolkits\VTK\Examples\2.3.2_TestVTKInstall目录下有两个文件,分别为CMakeLists.txt和TestVTKInstall.cpp。打开CMake程序,在CMake的“Where is the source code”一栏输入路径:D:\Toolkits\VTK\Examples\2.3.2_TestVTKInstall,在“Where to build the binaries”一栏输入路径:D:\Toolkits\VTK\Examples\2.3.2_TestVTKInstall\bin,接着按“Configure”按钮,CMake会弹出图2.8的对话框。
图2.8CMake询问是否创建不存在的路径
选择“Yes”,然后再选择我们准备采用的编译环境“Visual Studio 2008Win64”,CMake开始配置工程。这个工程非常小,很快就配置完成,接着在CMake界面上会出现一些红色的选项,如果没有勾选“Advance”视图,默认显示出来的选项只有两项,分别是:CMAKE_INSTALL_PREFIX以及VTK_DIR,前一个选项我们已经知道是什么意思,VTK_DIR这个选项就是指向编译的VTK目录,即D:/Toolkits/VTK/VTK-5.10-bin,准确地说,这个路径就是VTKConfig.cmake文件所在的完整路径。对于CMAKE_INSTALL_PREFIX这个选项默认的值都是C:\Program
Files\XXX (XXX指的就是你在CMakeLists.txt里的project(XXX)命令里填写的工程名字)。对于VTK_DIR,一般情况下,在你编译完VTK以后,用CMake配置VTK的工程时,会自动找到这个路径,如果CMake找不到,或者找到的不是你想要的VTK版本(假如你的计算机已经编译多个版本的VTK时),可以通过“Browse Build…”按钮选择需要的VTK编译路径,或者直接输入该路径。
设置完选项的值以后,再次“Configure”,直到没有红色的选项出现,最后“Generate”。完成以后打开在“Whereto build the binaries”一栏指定的路径D:\Toolkits\VTK\Examples\2.3.2_TestVTKInstall\bin,生成的文件如图2.9所示。
图2.9用CMake构建TestVTKInstall工程所生成的文件
打开我们熟悉的*.sln文件,即TestVTKInstall.sln,按键盘F7键开始编译工程,完成以后按F5运行,如果没有其他意外,会弹出图2.10的对话框。
图2.10Executable For Debug Session对话框
对于不熟悉VisualStudio 2008的初学者而言,会以为这是一种错误,其实只是项目默认的启动工程没有生成可执行文件而已。右击“Solution Explorer”里的“TestVTKInstall”工程,然后选择“Set as StartUp project”,再次F5,运行界面如图2.11所示。靠前的是VTK窗口,靠后的是控制台窗口,用CMake构建的工程,默认的都是带控制台窗口的,方便输出调试信息。
如果到这里,你的程序的运行结果也跟图2.11的类似,说明你的计算机已经成功安装了VTK。
图2.11示例2.3.2_TestVTKInstall运行界面
2.3.3 CMake的几个常用命令
为便于描述,我们把2.3.2节里的CMakeLists.txt的内容再列出来,并标上行号:
1: cmake_minimum_required(VERSION 2.8)
2: project(TestVTKInstall)
3: find_package(VTK REQUIRED)
4: include(${VTK_USE_FILE})
5: add_executable(${PROJECT_NAME} TestVTKInstall.cpp)
6: target_link_libraries(${PROJECT_NAME} vtkRendering vtkCommon)
第1行用到的CMake命令cmake_minimum_required,该命令完整的形式为:
cmake_minimum_required(VERSION
major[.minor[.patch[.tweak]]]
[FATAL_ERROR])
命令说明:用于指定构建工程时所需的CMake版本要求。参数VERSION,必须的关键字,且为大写,(注:CMake的命令名是不区分大小写的,为了统一描述,本书里所有的CMake命令都以小写书写,但是CMake命令的参数关键字,如VERSION,要求必须大写。)第二个参数为指定CMake的版本号,CMake最新的版本是2.8.10,日发布。第三个参数为可选参数,且为内置的关键字“FATAL_ERROR”。如果构建工程所用的CMake版本没有达到要求,配置过程就会弹出图2.12所示的错误提示信息,终止工程构建过程。
图2.12CMake构建工程时的错误提示信息
第2行,project命令。完整语法格式为:
project(projectname[CXX] [C] [Java])
用该命令指定工程名称,可指定工程支持的语言,支持语言的参数为可选。默认支持C\C++。该命令还隐含两个CMake变量:&projectname&_BINARY_DIR以及&projectname&_SOURCE_DIR,在这个例子里就是TestVTKInstall_BINARY_DIR以及TestVTKInstall_SOURCE_DIR。同时CMake也预定义了PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR变量,他们的值分别跟&projectname&_BINARY_DIR与&projectname&_SOURCE_DIR一致。为了统一起见,以后直接使用PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR分别表示工程的编译路径和源码路径,即这个例子里的“D:\Toolkits\VTK\Examples\2.3.2_TestVTKInstall\bin”和“D:\Toolkits\VTK\Examples\2.3.2_TestVTKInstall”,因为这样即使修改了工程名称,也不会影响这两个变量。
project命令的第一个参数还隐含了另外一个变量:PROJECT_NAME,我们在第5、6行分别引用了这个变量:${PROJECT_NAME}。注意:CMake使用“${变量}”的形式来获取该变量的值,也就是说,在这个例子里,${PROJECT_NAME}就相当于工程名:“TestVTKInstall”。
第3行find_package命令,完整语法格式为:
find_package( &package&
[[REQUIRED|COMPONENTS][components...]]
[NO_POLICY_SCOPE])
find_package命令用于搜索并加载外部工程,隐含的变量为&package&_FOUND,用于标示是否搜索到所需的工程。参数[REQUIRED]表示所要搜索的外部工程对本工程来说是必须的,如果没有搜索到,CMake会终止整个工程构建过程。对VTK为例,find_package命令搜索的就是VTK的配置文件VTKConfig.cmake。我们在VTK附带的例子目录里的CMakeLists.txt有以下的CMake脚本语句:
(摘自VTK-5.10\Examples\Tutorial\Step1\Cxx\CMakeListx.txt):
find_package(VTKREQUIRED)
if(NOTVTK_USE_RENDERING)
message(FATAL_ERROR"Example ${PROJECT_NAME} requires VTK_USE_RENDERING.")
endif(NOTVTK_USE_RENDERING)
其实这四行脚本的作用跟第3行实现的功能是一模一样的。关于find_package命令其他参数的意义可以参考CMake帮助文件(CMake安装目录下的doc文件夹下有文档文件)。
第4行include命令,完整的语法为:
include( &file|module&
[OPTIONAL]
[RESULT_VARIABLE&VAR&]
[NO_POLICY_SCOPE])
指定载入一个文件或者模块,如果指定的是模块,那么将在CMAKE_MODULE_PATH中搜索这个模块并载入,在本例中,指定的是VTK模块,则会在CMAKE_MODULE_PATH中搜索VTK模块并载入,变量CMAKE_MODULE_PATH指的是搜索CMake模块的目录,安装安CMake以后,在CMake的安装目录下(本机是安装在C:\Program Files (x86)\CMake 2.8\)可以找到CMake已经定义的模块,路径为:C:\Program Files (x86)\CMake2.8\share\cmake-2.8\Modules,在该目录下,有FindVTK.cmake文件。在这个文件里我们发现就有变量VTK_USE_FILE的说明信息。
VTK编译目录(D:/Toolkits/VTK/VTK-5.10-bin/)下的VTKConfig.cmake文件里我们可以看到变量VTK_USE_FILE定义为:
#The location of the UseVTK.cmake file.
SET(VTK_USE_FILE"D:/Toolkits/VTK/VTK-5.10-bin/UseVTK.cmake")
换言之,include (${VTK_USE_FILE})命令就是包含UseVTK.cmake文件。
第5行命令,完整语法为:
add_executable(&name&
[MACOSX_BUNDLE]
[EXCLUDE_FROM_ALL]
source1source2 ... sourceN)
定义这个工程会生成一个文件名为&name&的可执行文件(本例中,我们使用变量${PROJECT_NAME}的值来指定即将生成的可执行文件的名字),相关的源文件通过source1 source2 … sourceN列出(如果工程里有多个源文件,源文件之间用空格或者回车隔开),如果有多个源文件,也可以先用set命令定义一个变量,然后再用取变量值的操作符${}获取到源文件列表,比如,某工程有source1.cpp、source2.cpp和source3.cpp三个文件,可以写成:
set (projectname_srcsource1.cpp source2.cpp source3.cpp)
add_executable(projectname ${projectname_src})
与下行是等价的:
add_executable(projectname source1.cpp source2.cpp source3.cpp)
第6行命令,完整语法为:
target_link_libraries(&target&
[item1[item2 [...]]]
[[debug|optimized|general]&item&] ...)
指定生成可执行文件时需要链接哪些文件。参数&target&的名称必须与第5行指定的&name&一致。本例中,我们同样采用${PROJECT_NAME}来获取需要的名称,并且指定需要链接的函数库为vtkRendering,在写这些链接的函数库时不需要带“.lib”的后缀。
可能这个时候,你会问:为什么就知道要链接vtkRendering.lib这个文件呢?
文件里,我们使用到了vtkRenderWindow和vtkSmartPointer这个两个类,查找这两个类的头文件所在的路径,分别为:D:\Toolkits\VTK\VTK-5.10\Rendering和D:\Toolkits\VTK\VTK-5.10\Common。于是我们可以暂时做一个猜测:因为VTK里所有的类都是以“vtk”开头,那VTK生成的函数库应该也以“vtk”开头,而我们要用到的两个类vtkRenderWindow和vtkSmartPointer的头文件vtkRenderWindow.h和vtkSmartPointer.h又分别在文件夹Rendering和Common里,刚好在VTK编译的目录里我们能找到vtkRendering.lib和vtkCommon.lib这两个文件,于是是否可以断定我们要用到的两个类vtkRenderWindow和vtkSmartPointer的接口就是分别定义在vtkRendering.lib和vtkCommon.lib里的?最后我们做出艰难的决定:在CMakeLists.txt的target_link_libraries里,要链接的函数库就是vtkRendering和vtkCommon。随着对VTK的深入了解,你会发现这种猜测是对的!
如果你好奇心比较强的话,在VTKConfig.cmake这个文件里(用记事本打开),可以找到以下语句:
SET("vtkCvtkFvtkIvtkGvtkGenericFvtkIO;vtkRvtkVolumeRvtkHvtkWvtkIvtkGvtkVvtkCharts")
上面的内容我们已经讲过,set命令是用来定义某个变量的,而取变量的值我们可以用符号${},那是不是我只要在target_link_libraries的最后,不用一一列出所要链接的函数库,而直接引用变量值:${VTK_LIBRARIES}来代替列出的“vtkRenderingvtkCommon”呢?答案也是可行的。
到此为止,就应该能知道CMake常用的六个命令cmake_minimum_required、project、find_package、include、add_executable和target_link_libraries的“所以然”了,在这个CMakeLists.txt文件的六行代码里,除了第1行关于CMake版本要求的可以省略之外,其他的5行都是必须的。
2.3.4 一个简单的VTK工程
回头再看看TestVTKInstall.cpp里的代码,同样标上行号:
2.3.2_TestVTKInstall
#include"vtkRenderWindow.h"
#include"vtkSmartPointer.h"
int main()
vtkSmartPointer&vtkRenderWindow& renWin =vtkSmartPointer&vtkRenderWindow&::New();
renWin-&Render();
std::cin.get();
第1、2行,包含头文件,因为要用到VTK里的vtkRenderWindow和vtkSmartPointer两个类,所以包含相应的头文件。VTK对类的命名都是以小写的vtk开头,每个类的关键字的首字母大写。
第5行,用智能指针定义了一个类型为vtkRenderWindow的对象,这是VTK的类实例化对象的基本方法。因为VTK里每个类的构造函数都定义为保护成员,因此你不能够用以下的语句来定义一个VTK对象:
vtkClassE //vtkClassExample这个类当然是不存在的,只是说明问题而已
要不然会提示如下的错误:
errorC2248: vtkClassExample:: vtkClassExample: cannot access protected memberdeclared in class vtkClassExample
所以,要构造VTK的对象可以用第5行的方法,或者用以下的方法:
vtkRenderWindow*renWin = vtkRenderWindow::New();
至于为什么,后面的内容会让你再“知其所以然”。
第6行,调用vtkRenderWindow里的方法显示并渲染VTK窗口。
第8行,没有其他特别的意义,只不过是让程序暂停下来,等待接受用户的输入,目的是想让你看看VTK窗口到底是长什么样子,你可以把它注释掉,看看它会不会一闪而过。
这个程序非常简单,就一个VTK窗口,其他什么也没有。但它确实是一个VTK的工程,至少使用了两个VTK类,调用了一个VTK的方法。在后面的章节里,你还会经常与这个窗口打交道。
这章一开始我们为安装VTK作了非常充分的准备工作,了解了在编译安装VTK之前需要先安装哪些软件。然后,我们一步一步地演示了如何编译VTK,这个过程还是非常简单的。最后,安装完VTK,我们通过一个非常简单的VTK小程序——显示一个VTK窗口,来测试VTK是否成功安装。通过这个小程序,我们学习了CMakeLists.txt脚本的写法,并掌握了6个CMake命令,分别是:cmake_minimum_required、project、find_package、include、add_executable和target_link_libraries。
本章参考资料
[1]静态编译与动态编译:
[2]CMake介绍:
[3]CMake实践:
==========欢迎转载,转载时请保留该声明信息==========
版权归所有,更多信息请访问
教程系列导航:
================================================
没有更多推荐了,}

我要回帖

更多关于 linux下查看 vtk 版本 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信