2、VTK编译安装
学习VTK最好是从下载VTK源码,然后自己编译开始。编译VTK是很简单的一件事情,最重要的是把准备工作做好。本章将会详细演示如何编译安装VTK。
这里提到的VTK开发环境为:Windows 7旗舰版64位操作系统,Visual Studio 2008集成开发环境,CMake 2.8.6,Qt 4.8.2以及VTK 5.10 Release版本。后续所有的程序示例代码都是在这个环境下测试通过的。
2.1 编译VTK的准备工作
首先,你的计算机必须安装了VisualStudio 2008。如果采用其他集成开发环境(IDE)的,也必须先安装对应的IDE工具。编译64位版本的VTK之前,在安装Visual Studio 2008的时候,需要安装相应的64位组件。
其次,安装CMake。CMake下载地址:http://www.cmake.org/cmake/resources/software.html。Windows平台下只要下载文件cmake-2.8.6-win32-x86.exe即可。安装完CMake以后,运行界面如图2.1所示。
图2.1CMake界面
如果你在这之前没有听说过CMake,也不知道CMake如何使用,先不要着急。假如你实在比较急的话,可以先去Google或者百度一下CMake到底是个什么东西。
接着,如果你想自己编译VTK类库的帮助文档的话,还需要安装Doxygen工具。这一步不是必须的。
此外,如果你想使用Tcl、Python或者Java等语言开发的话,相应的工具也必须先安装。相关的文件可以从以下页面下载到:Tcl/Tk下载地址:http://www.tcl.tk/software/tcltk/;Python下载地址:http://www.python.org/;Java下载地址:http://www.java.com/。
最后,确定你想使用哪种工具作为界面开发,比如MFC、Qt、FLTK等等。以这个系列教程为例,采用Qt作为GUI(用户图形界面)开发工具,那么在安装VTK之前还必须安装Qt,Windows平台下的Qt Opensource编译版本可以从以下页面下载(http://qt-project.org/downloads/和http://code.google.com/p/qt-msvc-installer/downloads/list)。
换言之,如果你想使用C++作为开发语言,采用Qt作为GUI开发工具,但不想编译VTK的帮助文档(因为已经有现成的,编译帮助文档的时间也会比较长),那么在编译VTK之前,只要安装VisualStudio 2008、CMake和Qt即可。
2.2 编译VTK的详细步骤
将下载到的VTK源码文件vtk-5.10.0.zip解压到某个磁盘下,比如,解压到D:\Toolkits\VTK\VTK-5.10。然后,建立一个空的文件夹,叫什么名字无所谓,只要不含有中文即可(为了让文件名看起来规整统一,新建的文件夹命名为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的测试程